powerbi-cli
Version:
Power BI command line interface for managing Power BI Embedded workspace collections
121 lines • 5.96 kB
JavaScript
;
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