UNPKG

powerbi-cli

Version:

Power BI command line interface for managing Power BI Embedded workspace collections

121 lines 5.96 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var powerbi = require("powerbi-api"); var msrest = require("ms-rest"); var cli_1 = require("./cli"); var config_1 = require("./config"); var program = require("commander"); function CliUpdateConnection() { var pkg = require('../package.json'); program.version(pkg.version) .option('-c, --collection <collection>', 'The Power BI workspace collection') .option('-w, --workspace <workspaceId>', 'The Power BI workspace') .option('-k, --accessKey <accessKey>', 'The Power BI workspace collection access key') .option('-d, --dataset <datasetId>', 'The dataset to update') .option('-s, --connectionString [connectionString]', 'The connection string to access the datasource') .option('-u, --username [username]', 'The username to access the datasource') .option('-p, --password [password]', 'The password to access the datasource') .option('-b --baseUri [baseUri]', 'The base uri to connect to'); program.on('--help', function () { console.log(' Examples:'); console.log(''); console.log(' $ powerbi update-connection -c <collection> -k <accessKey> -w <workspace> -d <datasetId> -u [username] -p [password] -s [connectionString]'); }); program.parse(process.argv); var settings = config_1.Config.merge(program); if (process.argv.length === 2 || !settings.dataset) { program.help(); } else { try { var credentials = new msrest.TokenCredentials(settings.accessKey, 'AppKey'); var client_1 = new powerbi.PowerBIClient(credentials, settings.baseUri, null); client_1.datasets.getDatasetById(settings.collection, settings.workspace, settings.dataset, function (getDatasetError, result) { if (getDatasetError) { return cli_1.Cli.error(getDatasetError); } cli_1.Cli.success('Found dataset!'); cli_1.Cli.print('Id: %s', result.id); cli_1.Cli.print('Name: %s', result.name); if (settings.connectionString) { updateConnectionString(client_1, settings, function (updateConnectionStringError) { if (updateConnectionStringError) { return cli_1.Cli.error(updateConnectionStringError); } }); } if (settings.username && settings.password) { updateCredentials(client_1, settings, function (updateCredentialsError) { if (updateCredentialsError) { return cli_1.Cli.error(updateCredentialsError); } }); } }); } catch (err) { cli_1.Cli.error(err); } } function updateConnectionString(client, settings, callback) { var params = { connectionString: settings.connectionString }; cli_1.Cli.print('Updating connection string...'); client.datasets.setAllConnections(settings.collection, settings.workspace, settings.dataset, params, function (err, result) { if (err) { callback(err); } cli_1.Cli.success('Connection string successfully updated'); cli_1.Cli.print('Dataset: ', settings.dataset); cli_1.Cli.print('ConnectionString: ', settings.connectionString); callback(null, result); }); } function updateCredentials(client, settings, callback) { cli_1.Cli.print('Getting gateway datasources...'); client.datasets.getGatewayDatasources(settings.collection, settings.workspace, settings.dataset, function (err, result) { if (err) { return callback(err); } var datasources = result.value; if (datasources.length === 0) { return cli_1.Cli.warn('No datasources found within dataset: %s', settings.dataset); } if (datasources.length > 0) { cli_1.Cli.success('Found %s Datasources for Dataset %s', datasources.length, settings.dataset); cli_1.Cli.print('--------------------------------------------------------------------'); } datasources.forEach(function (datasource) { cli_1.Cli.print('Datesource ID: ', datasource.id); cli_1.Cli.print('Gateway ID: ', datasource.gatewayId); cli_1.Cli.print('Credential Type: ', datasource.credentialType); cli_1.Cli.print('Datasource Type: ', datasource.datasourceType); }); var datasource = datasources[0]; if (datasources.length > 1) { cli_1.Cli.warn('Found multiple datasources, using datasource "%s" by default', datasource.id); } var credentials = { username: settings.username, password: settings.password }; var delta = { credentialType: 'Basic', basicCredentials: credentials }; cli_1.Cli.print('Updating datasource credentials...'); client.gateways.patchDatasource(settings.collection, settings.workspace, datasource.gatewayId, datasource.id, delta, function (err, patchResult) { if (err) { return callback(err); } cli_1.Cli.success('Successfully updated datasource credentials!'); cli_1.Cli.print('Datasource ID: ', datasource.id); cli_1.Cli.print('Gateway ID: ', datasource.gatewayId); callback(null, datasource); }); }); } } exports.default = CliUpdateConnection; //# sourceMappingURL=cli-update-connection.js.map