UNPKG

azure-cli

Version:

Microsoft Azure Cross Platform Command Line tool

697 lines (329 loc) 28.6 kB
/*** Generated by streamline 0.10.17 (callbacks) - DO NOT EDIT ***/ var __rt=require('streamline/lib/callbacks/runtime').runtime(__filename, false),__func=__rt.__func,__cb=__rt.__cb,__tryCatch=__rt.__tryCatch; var util = require("util"); var commander = require("commander"); var StorageUtil = require("../../util/storage.util"); var utils = require("../../util/utils"); var validation = require("../../util/validation"); var performStorageOperation = StorageUtil.performStorageOperation; var startProgress = StorageUtil.startProgress; var endProgress = StorageUtil.endProgress; var $ = utils.getLocaleString; commander.Command.prototype.addStorageAccountOption = function() { this.option("-a, --account-name <accountName>", $("the storage account name")); this.option("-k, --account-key <accountKey>", $("the storage account key")); this.option("-c, --connection-string <connectionString>", $("the storage connection string")); this.option("-vv", $("run storage command in debug mode")); return this;}; exports.init = function(cli) { StorageUtil.init(cli); var MAX_RULES = 5; var SupportedMethods = { DELETE: 0, GET: 1, HEAD: 2, MERGE: 3, POST: 4, OPTIONS: 5, PUT: 6, TRACE: 7, CONNECT: 8 }; var storage = cli.category("storage").description($("Commands to manage your Storage objects")); var logger = cli.output; var logging = storage.category("logging").description($("Commands to manage your Storage logging properties")); logging.command("show").description($("Show the logging properties of the storage services ")).option("--blob", $("show logging properties for blob service")).option("--table", $("show logging properties for table service")).option("--queue", $("show logging properties for queue service")).addStorageAccountOption().execute(showLoggingProperties); logging.command("set").description($("Set the logging properties of the storage service")).option("--blob", $("set logging properties for blob service")).option("--table", $("set logging properties for table service")).option("--queue", $("set logging properties for queue service")).option("--version <version>", $("the version string")).option("--retention <retention>", $("set logging retention in days")).option("--read", $("enable logging for read requests")).option("--read-off", $("disable logging for read requests")).option("--write", $("enable logging for write requests")).option("--write-off", $("disable logging for write requests")).option("--delete", $("enable logging for delete requests")).option("--delete-off", $("disable logging for delete requests")).addStorageAccountOption().execute(setLoggingProperties); var metrics = storage.category("metrics").description($("Commands to manage your Storage metrics properties")); metrics.command("show").description($("Show the metrics properties of the storage services ")).option("--blob", $("show metrics properties for blob service")).option("--table", $("show metrics properties for table service")).option("--queue", $("show metrics properties for queue service")).option("--file", $("show metrics properties for file service")).addStorageAccountOption().execute(showMetricsProperties); metrics.command("set").description($("Set the metrics properties of the storage service")).option("--blob", $("set metrics properties for blob service")).option("--table", $("set metrics properties for table service")).option("--queue", $("set metrics properties for queue service")).option("--file", $("set metrics properties for file service")).option("--version <version>", $("the version string")).option("--retention <retention>", $("set metrics retention in days")).option("--hour", $("set hourly metrics properties")).option("--hour-off", $("turn off hourly metrics properties")).option("--minute", $("set minute metrics properties")).option("--minute-off", $("turn off minute metrics properties")).option("--api", $("include API in metrics ")).option("--api-off", $("exclude API from metrics")).addStorageAccountOption().execute(setMetricsProperties); var cors = storage.category("cors").description($("Commands to manage your Storage CORS (Cross-Origin Resource Sharing)")); cors.command("set").description($("Set the CORS rules of the storage service")).option("--blob", $("set CORS rules for blob service")).option("--table", $("set CORS rules for table service")).option("--queue", $("set CORS rules for queue service")).option("--file", $("set CORS rules for file service")).option("--cors <cors>", $("the CORS rules array in json format")).addStorageAccountOption().execute(setCORS); cors.command("show").description($("Show the CORS rules of the storage service")).option("--blob", $("show CORS rules for blob service")).option("--table", $("show CORS rules for table service")).option("--queue", $("show CORS rules for queue service")).option("--file", $("show CORS rules for file service")).addStorageAccountOption().execute(showCORS); cors.command("delete").description($("Delete all the CORS rules of the storage service")).option("--blob", $("delete CORS rules for blob service")).option("--table", $("delete CORS rules for table service")).option("--queue", $("delete CORS rules for queue service")).option("--file", $("delete CORS rules for file service")).option("-q, --quiet", $("delete the CORS rules without confirmation")).addStorageAccountOption().execute(deleteCORS); function showLoggingProperties(options, _) { var types, operations, tips, serviceProperties, index, property, output; var __frame = { name: "showLoggingProperties", line: 155 }; return __func(_, this, arguments, showLoggingProperties, 1, __frame, function __$showLoggingProperties() { types = getServiceTypes(options, false); operations = []; types.forEach(function(type) { var client = getServiceClient(type, options); operations.push(StorageUtil.getStorageOperation(client, type, "getServiceProperties")); }); tips = util.format($("Getting storage logging properties for service: %s"), types); startProgress(tips); serviceProperties = []; return (function ___(__then) { (function ___(_) { __tryCatch(_, function __$showLoggingProperties() { index = 0; var __3 = false; return (function ___(__break) { var __more; var __loop = __cb(_, __frame, 0, 0, function __$showLoggingProperties() { __more = false; if (__3) { index++; } else { __3 = true; } ; var __2 = (index < operations.length); if (__2) { return performStorageOperation(operations[index], __cb(_, __frame, 15, 23, function ___(__0, __1) { property = __1; property.type = operations[index].type; serviceProperties.push(property); while (__more) { __loop(); }; __more = true; }, true)); } else { __break(); } ; }); do { __loop(); } while (__more); __more = true; })(function __$showLoggingProperties() { _(null, null, true); }); }); })(function ___(__e, __r, __cont) { (function ___(__then) { __tryCatch(_, function __$showLoggingProperties() { endProgress(); __then(); }); })(function ___() { __tryCatch(_, function ___() { if (__cont) { __then(); } else { _(__e, __r); }; }); }); }); })(function ___() { __tryCatch(_, function __$showLoggingProperties() { output = []; serviceProperties.forEach(function(property) { property.Logging.Type = property.type; output.push(property.Logging); }); cli.interaction.formatOutput(output, function(outputData) { logger.table(outputData, function(row, item) { row.cell($("Service Type"), item.Type); row.cell($("Version"), item.Version); row.cell($("Retention Days"), getRetentionString(item.RetentionPolicy)); row.cell($("Read Requests"), getStatusString(item.Read)); row.cell($("Write Requests"), getStatusString(item.Write)); row.cell($("Delete Requests"), getStatusString(item.Delete)); }); }); _(); }); }); }); }; function setLoggingProperties(options, _) { var types, client, getOperation, setOperation, tips, serviceProperties; var __frame = { name: "setLoggingProperties", line: 201 }; return __func(_, this, arguments, setLoggingProperties, 1, __frame, function __$setLoggingProperties() { types = getServiceTypes(options, true); client = getServiceClient(types[0], options); getOperation = StorageUtil.getStorageOperation(client, types[0], "getServiceProperties"); setOperation = StorageUtil.getStorageOperation(client, types[0], "setServiceProperties"); tips = util.format($("Setting storage logging properties for service: %s"), types); startProgress(tips); return (function ___(__then) { (function ___(_) { __tryCatch(_, function __$setLoggingProperties() { return performStorageOperation(getOperation, __cb(_, __frame, 9, 30, function ___(__0, __1) { serviceProperties = __1; generateServiceLoggingProperties(serviceProperties, options); return performStorageOperation(setOperation, __cb(_, __frame, 11, 6, function __$setLoggingProperties() { _(null, null, true); }, true), serviceProperties); }, true)); }); })(function ___(__e, __r, __cont) { (function ___(__then) { __tryCatch(_, function __$setLoggingProperties() { endProgress(); __then(); }); })(function ___() { __tryCatch(_, function ___() { if (__cont) { __then(); } else { _(__e, __r); }; }); }); }); })(function ___() { __tryCatch(_, function __$setLoggingProperties() { return showLoggingProperties(options, __cb(_, __frame, 16, 4, function __$setLoggingProperties() { _(); }, true)); }); }); }); }; function showMetricsProperties(options, _) { var types, operations, tips, serviceProperties, index, property, output; var __frame = { name: "showMetricsProperties", line: 225 }; return __func(_, this, arguments, showMetricsProperties, 1, __frame, function __$showMetricsProperties() { types = getServiceTypes(options, false, true); operations = []; types.forEach(function(type) { var client = getServiceClient(type, options); operations.push(StorageUtil.getStorageOperation(client, type, "getServiceProperties")); }); tips = util.format($("Getting storage metrics properties for service: %s"), types); startProgress(tips); serviceProperties = []; return (function ___(__then) { (function ___(_) { __tryCatch(_, function __$showMetricsProperties() { index = 0; var __3 = false; return (function ___(__break) { var __more; var __loop = __cb(_, __frame, 0, 0, function __$showMetricsProperties() { __more = false; if (__3) { index++; } else { __3 = true; } ; var __2 = (index < operations.length); if (__2) { return performStorageOperation(operations[index], __cb(_, __frame, 15, 23, function ___(__0, __1) { property = __1; property.type = operations[index].type; serviceProperties.push(property); while (__more) { __loop(); }; __more = true; }, true)); } else { __break(); } ; }); do { __loop(); } while (__more); __more = true; })(function __$showMetricsProperties() { _(null, null, true); }); }); })(function ___(__e, __r, __cont) { (function ___(__then) { __tryCatch(_, function __$showMetricsProperties() { endProgress(); __then(); }); })(function ___() { __tryCatch(_, function ___() { if (__cont) { __then(); } else { _(__e, __r); }; }); }); }); })(function ___() { __tryCatch(_, function __$showMetricsProperties() { output = []; serviceProperties.forEach(function(property) { var properties = { type: property.type, HourMetrics: [], MinuteMetrics: [] }; properties.HourMetrics.push(property.HourMetrics); properties.MinuteMetrics.push(property.MinuteMetrics); output.push(properties); }); cli.interaction.formatOutput(output, function(outputData) { outputData.forEach(function(properties) { logger.data(util.format($("The metrics properties for %s service are: "), properties.type)); logger.table(properties.HourMetrics, function(row, item) { row.cell($("Metrics Type"), "Hourly"); row.cell($("Enabled"), getStatusString(item.Enabled)); row.cell($("Version"), item.Version); row.cell($("Retention Days"), getRetentionString(item.RetentionPolicy)); row.cell($("Include APIs"), getStatusString(item.IncludeAPIs)); }); logger.data(""); logger.table(properties.MinuteMetrics, function(row, item) { row.cell($("Metrics Type"), "Minute"); row.cell($("Enabled"), getStatusString(item.Enabled)); row.cell($("Version"), item.Version); row.cell($("Retention Days"), getRetentionString(item.RetentionPolicy)); row.cell($("Include APIs"), getStatusString(item.IncludeAPIs)); }); logger.data("\n"); }); }); _(); }); }); }); }; function setMetricsProperties(options, _) { var types, client, getOperation, setOperation, tips, serviceProperties; var __frame = { name: "setMetricsProperties", line: 284 }; return __func(_, this, arguments, setMetricsProperties, 1, __frame, function __$setMetricsProperties() { types = getServiceTypes(options, true, true); client = getServiceClient(types[0], options); getOperation = StorageUtil.getStorageOperation(client, types[0], "getServiceProperties"); setOperation = StorageUtil.getStorageOperation(client, types[0], "setServiceProperties"); tips = util.format($("Setting storage metric properties for service: %s"), types); startProgress(tips); return (function ___(__then) { (function ___(_) { __tryCatch(_, function __$setMetricsProperties() { return performStorageOperation(getOperation, __cb(_, __frame, 9, 30, function ___(__0, __1) { serviceProperties = __1; generateServiceMetricsProperties(serviceProperties, options); return performStorageOperation(setOperation, __cb(_, __frame, 11, 6, function __$setMetricsProperties() { _(null, null, true); }, true), serviceProperties); }, true)); }); })(function ___(__e, __r, __cont) { (function ___(__then) { __tryCatch(_, function __$setMetricsProperties() { endProgress(); __then(); }); })(function ___() { __tryCatch(_, function ___() { if (__cont) { __then(); } else { _(__e, __r); }; }); }); }); })(function ___() { __tryCatch(_, function __$setMetricsProperties() { return showMetricsProperties(options, __cb(_, __frame, 16, 4, function __$setMetricsProperties() { _(); }, true)); }); }); }); }; function setCORS(options, _) { var types, client, getOperation, setOperation, tips, serviceProperties, rules; var __frame = { name: "setCORS", line: 308 }; return __func(_, this, arguments, setCORS, 1, __frame, function __$setCORS() { types = getServiceTypes(options, true, true); client = getServiceClient(types[0], options); getOperation = StorageUtil.getStorageOperation(client, types[0], "getServiceProperties"); setOperation = StorageUtil.getStorageOperation(client, types[0], "setServiceProperties"); if (!options.cors) { return _(new Error($("Please set the --cors value"))); } ; tips = util.format($("Setting storage CORS rules for service: %s"), types[0]); startProgress(tips); return (function ___(__then) { (function ___(_) { __tryCatch(_, function __$setCORS() { return performStorageOperation(getOperation, __cb(_, __frame, 13, 30, function ___(__0, __1) { serviceProperties = __1; serviceProperties.Cors.CorsRule = []; rules = JSON.parse(options.cors); rules.forEach(function(rule) { var ruleOptions = options; ruleOptions.add = true; ruleOptions.allowedOrigins = (rule.AllowedOrigins ? rule.AllowedOrigins.toString() : ""); ruleOptions.allowedMethods = (rule.AllowedMethods ? rule.AllowedMethods.toString() : ""); ruleOptions.allowedHeaders = (rule.AllowedHeaders ? rule.AllowedHeaders.toString() : ""); ruleOptions.exposedHeaders = (rule.ExposedHeaders ? rule.ExposedHeaders.toString() : ""); ruleOptions.maxAge = (rule.MaxAgeInSeconds ? rule.MaxAgeInSeconds.toString() : ""); generateCORSRules(serviceProperties, ruleOptions); }); return performStorageOperation(setOperation, __cb(_, __frame, 27, 6, function __$setCORS() { _(null, null, true); }, true), serviceProperties); }, true)); }); })(function ___(__e, __r, __cont) { (function ___(__then) { __tryCatch(_, function __$setCORS() { endProgress(); __then(); }); })(function ___() { __tryCatch(_, function ___() { if (__cont) { __then(); } else { _(__e, __r); }; }); }); }); })(function ___() { __tryCatch(_, function __$setCORS() { return showCORS(options, __cb(_, __frame, 32, 4, function __$setCORS() { _(); }, true)); }); }); }); }; function showCORS(options, _) { var types, client, getOperation, tips, serviceProperties, output; var __frame = { name: "showCORS", line: 348 }; return __func(_, this, arguments, showCORS, 1, __frame, function __$showCORS() { types = getServiceTypes(options, true, true); client = getServiceClient(types[0], options); getOperation = StorageUtil.getStorageOperation(client, types[0], "getServiceProperties"); tips = util.format($("Getting storage CORS rules for service: %s"), types[0]); serviceProperties = { }; startProgress(tips); return (function ___(__then) { (function ___(_) { __tryCatch(_, function __$showCORS() { return performStorageOperation(getOperation, __cb(_, __frame, 9, 26, function ___(__0, __1) { serviceProperties = __1; _(null, null, true); }, true)); }); })(function ___(__e, __r, __cont) { (function ___(__then) { __tryCatch(_, function __$showCORS() { endProgress(); __then(); }); })(function ___() { __tryCatch(_, function ___() { if (__cont) { __then(); } else { _(__e, __r); }; }); }); }); })(function ___() { __tryCatch(_, function __$showCORS() { output = (serviceProperties.Cors.CorsRule ? serviceProperties.Cors.CorsRule : { }); cli.interaction.formatOutput(output, function(outputData) { var number = 1; if ((outputData.length > 0)) { outputData.forEach(function(rule) { logger.data(util.format($("CORS rule %s: "), number++)); logger.data(util.format($(" Allowed Origins: %s"), rule.AllowedOrigins)); logger.data(util.format($(" Allowed Methods: %s"), rule.AllowedMethods)); logger.data(util.format($(" Allowed Headers: %s"), rule.AllowedHeaders)); logger.data(util.format($(" Exposed Headers: %s"), rule.ExposedHeaders)); logger.data(util.format($(" Maximum Age: %s"), rule.MaxAgeInSeconds)); logger.data(""); }); } else { logger.info(util.format($("No CORS rule is set"))); } ; }); _(); }); }); }); }; function deleteCORS(options, _) { var types, client, getOperation, setOperation, force, tips, serviceProperties; var __frame = { name: "deleteCORS", line: 387 }; return __func(_, this, arguments, deleteCORS, 1, __frame, function __$deleteCORS() { types = getServiceTypes(options, true, true); client = getServiceClient(types[0], options); getOperation = StorageUtil.getStorageOperation(client, types[0], "getServiceProperties"); setOperation = StorageUtil.getStorageOperation(client, types[0], "setServiceProperties"); force = !!options.quiet; return (function __$deleteCORS(__then) { if ((force !== true)) { return cli.interaction.confirm($("Do you want to delete the CORS rules? [y/n]"), __cb(_, __frame, 8, 30, function ___(__0, __1) { force = __1; if ((force !== true)) { return _(null); } ; __then(); }, true)); } else { __then(); } ; })(function __$deleteCORS() { tips = util.format($("Deleting storage CORS rules for service: %s"), types[0]); startProgress(tips); return (function ___(__then) { (function ___(_) { __tryCatch(_, function __$deleteCORS() { return performStorageOperation(getOperation, __cb(_, __frame, 17, 30, function ___(__0, __2) { serviceProperties = __2; options.add = false; generateCORSRules(serviceProperties, options); return performStorageOperation(setOperation, __cb(_, __frame, 20, 6, function __$deleteCORS() { _(null, null, true); }, true), serviceProperties); }, true)); }); })(function ___(__e, __r, __cont) { (function ___(__then) { __tryCatch(_, function __$deleteCORS() { endProgress(); __then(); }); })(function ___() { __tryCatch(_, function ___() { if (__cont) { __then(); } else { _(__e, __r); }; }); }); }); })(function ___() { __tryCatch(_, function __$deleteCORS() { logger.info(util.format($("CORS rules for %s service have been deleted successfully"), types[0])); _(); }); }); }); }); }; function getServiceTypes(options, exclusive, supportFile) { var isBlob = options.blob; var isTable = options.table; var isQueue = options.queue; var isFile = options.file; var count = 0; count = (isBlob ? (count + 1) : count); count = (isTable ? (count + 1) : count); count = (isQueue ? (count + 1) : count); if (supportFile) { count = (isFile ? (count + 1) : count); } else if (isFile) { throw new Error($("File service doesn't support the operation")); } ; if ((count === 0)) { if (exclusive) { throw new Error($("Please define the service type")); } else { isBlob = isTable = isQueue = true; isFile = supportFile; } ; } else if (((count > 1) && exclusive)) { throw new Error($("Please define only one service type")); } ; var types = []; if (isBlob) { types.push(StorageUtil.OperationType.Blob); } ; if (isTable) { types.push(StorageUtil.OperationType.Table); } ; if (isQueue) { types.push(StorageUtil.OperationType.Queue); } ; if (isFile) { types.push(StorageUtil.OperationType.File); } ; return types; }; function getServiceClient(type, options) { switch (type) { case StorageUtil.OperationType.Blob: return StorageUtil.getServiceClient(StorageUtil.getBlobService, options); case StorageUtil.OperationType.Queue: return StorageUtil.getServiceClient(StorageUtil.getQueueService, options); case StorageUtil.OperationType.Table: return StorageUtil.getServiceClient(StorageUtil.getTableService, options); case StorageUtil.OperationType.File: return StorageUtil.getServiceClient(StorageUtil.getFileService, options); }; }; function generateServiceLoggingProperties(serviceProperties, options) { if (options.Version) { serviceProperties.Logging.Version = "1.0"; } ; if (options.retention) { if (!StorageUtil.isValidRetention(options.retention)) { throw new Error($("--retention must be set with a positive integer")); } ; if ((typeof options.retention === "string")) { options.retention = parseInt(options.retention, 10); } ; serviceProperties.Logging.RetentionPolicy = { }; if ((options.retention !== 0)) { serviceProperties.Logging.RetentionPolicy.Enabled = true; serviceProperties.Logging.RetentionPolicy.Days = options.retention; } else { serviceProperties.Logging.RetentionPolicy.Enabled = false; delete serviceProperties.Logging.RetentionPolicy.Days; } ; } ; if ((options.read && options.readOff)) { throw new Error($("--read and --read-off cannot be both defined")); } else if (options.read) { serviceProperties.Logging.Read = true; } else if (options.readOff) { serviceProperties.Logging.Read = false; } ; if ((options.write && options.writeOff)) { throw new Error($("--write and --write-off cannot be both defined")); } else if (options.write) { serviceProperties.Logging.Write = true; } else if (options.writeOff) { serviceProperties.Logging.Write = false; } ; if ((options.delete && options.deleteOff)) { throw new Error($("--delete and --delete-off cannot be both defined")); } else if (options.delete) { serviceProperties.Logging.Delete = true; } else if (options.deleteOff) { serviceProperties.Logging.Delete = false; } ; }; function generateServiceMetricsProperties(serviceProperties, options) { if ((((!options.hour && !options.minute) && !options.hourOff) && !options.minuteOff)) { throw new Error($("Please define one of them: --hour, --minute, --hour-off or --minute-off")); } else if ((options.hour && options.minute)) { throw new Error($("Only one of --hour and --minute should be defined")); } ; if ((options.hour && options.hourOff)) { throw new Error($("--hour and --hour-off cannot be both defined")); } else if (options.hour) { setMetrics(serviceProperties.HourMetrics, options); } else if (options.hourOff) { disableMetrics(serviceProperties.HourMetrics); } ; if ((options.minute && options.minuteOff)) { throw new Error($("--minute and --minute-off cannot be both defined")); } else if (options.minute) { setMetrics(serviceProperties.MinuteMetrics, options); } else if (options.minuteOff) { disableMetrics(serviceProperties.MinuteMetrics); } ; }; function setMetrics(metrics, options) { metrics.Enabled = true; if (options.Version) { metrics.Version = "1.0"; } ; if (options.retention) { if (!StorageUtil.isValidRetention(options.retention)) { throw new Error($("--retention must be set with a positive integer")); } ; if ((typeof options.retention === "string")) { options.retention = parseInt(options.retention, 10); } ; metrics.RetentionPolicy = { }; if ((options.retention !== 0)) { metrics.RetentionPolicy.Enabled = true; metrics.RetentionPolicy.Days = options.retention; } else { metrics.RetentionPolicy.Enabled = false; delete metrics.RetentionPolicy.Days; } ; } ; if ((options.api && options.apiOff)) { throw new Error($("--api and --api-off cannot be both defined")); } else if (options.api) { metrics.IncludeAPIs = true; } else if (options.apiOff) { metrics.IncludeAPIs = false; } ; }; function disableMetrics(metrics) { if (metrics) { metrics.Enabled = false; delete metrics.IncludeAPIs; } ; }; function getStatusString(isOn) { return (isOn ? $("on") : $("off")); }; function getRetentionString(retention) { if ((retention && retention.Enabled)) { return retention.Days.toString(); } else { return $("Not set"); } ; }; function generateCORSRules(serviceProperties, options) { if (options.add) { var rule = { AllowedOrigins: options.allowedOrigins.split(","), AllowedMethods: parseAndValidateCORSRuleMethods(options.allowedMethods), AllowedHeaders: options.allowedHeaders.split(","), ExposedHeaders: options.exposedHeaders.split(","), MaxAgeInSeconds: parseAndValidateCORSRuleMaxAge(options.maxAge) }; serviceProperties.Cors.CorsRule.push(rule); if ((serviceProperties.Cors.CorsRule.length > MAX_RULES)) { throw new Error(util.format($("You can only specify up to %s CORS rules per storage service"), MAX_RULES)); } ; } else { serviceProperties.Cors = { }; } ; }; function parseAndValidateCORSRuleMethods(methods) { var allowed = methods.toUpperCase().split(","); allowed.forEach(function(method) { method = method.trim(); validation.isValidEnumValue(method, Object.keys(SupportedMethods)); }); return allowed; }; function parseAndValidateCORSRuleMaxAge(maxAge) { if ((maxAge && !validation.isInt(maxAge))) { throw new Error($("The maximum age should be an integer")); } ; return parseInt(maxAge); };};