コード例 #1
0
        public static void PatchSqlDatasourceCredentials(Guid WorkspaceId, string DatasetId, string UserName, string UserPassword)
        {
            PowerBIClient pbiClient   = TokenManager.GetPowerBiAppOnlyClient();
            var           datasources = (pbiClient.Datasets.GetDatasourcesInGroup(WorkspaceId, DatasetId)).Value;

            // find the target SQL datasource
            foreach (var datasource in datasources)
            {
                if (datasource.DatasourceType.ToLower() == "sql")
                {
                    // get the datasourceId and the gatewayId
                    var datasourceId = datasource.DatasourceId;
                    var gatewayId    = datasource.GatewayId;
                    // Create UpdateDatasourceRequest to update Azure SQL datasource credentials
                    UpdateDatasourceRequest req = new UpdateDatasourceRequest {
                        CredentialDetails = new CredentialDetails(
                            new BasicCredentials(UserName, UserPassword),
                            PrivacyLevel.None,
                            EncryptedConnection.NotEncrypted)
                    };
                    // Execute Patch command to update Azure SQL datasource credentials
                    pbiClient.Gateways.UpdateDatasource((Guid)gatewayId, (Guid)datasourceId, req);
                }
            }
            ;
        }
コード例 #2
0
        /// <summary>
        /// Updates Datasource credentials
        /// </summary>
        /// <param name="gatewayId">Gateway Id of corresponding dataset</param>
        /// <param name="datasourceId">Datasource Id of corresponding gateway</param>
        /// <param name="dataSourceRequest">Request body for Update Datasource API</param>
        public void UpdateDatasource(Guid gatewayId, Guid datasourceId, UpdateDatasourceRequest dataSourceRequest)
        {
            PowerBIClient pbiClient = this.GetPowerBIClient();

            // Update credentials
            pbiClient.Gateways.UpdateDatasource(gatewayId, datasourceId, dataSourceRequest);
        }
コード例 #3
0
        public static async Task PatchAnonymousDatasourceCredentials(string WorkspaceId, string importName)
        {
            PowerBIClient pbiClient = GetPowerBiClient();
            var           datasets  = (await pbiClient.Datasets.GetDatasetsInGroupAsync(WorkspaceId)).Value;

            foreach (var dataset in datasets)
            {
                if (importName.Equals(dataset.Name))
                {
                    string datasetId   = dataset.Id;
                    var    datasources = (await pbiClient.Datasets.GetDatasourcesInGroupAsync(WorkspaceId, datasetId)).Value;
                    foreach (var datasource in datasources)
                    {
                        if (datasource.DatasourceType == "OAuth" || datasource.DatasourceType == "File")
                        {
                            var datasourceId = datasource.DatasourceId;
                            var gatewayId    = datasource.GatewayId;
                            // create credentials for Azure SQL database log in
                            CredentialDetails       details = new CredentialDetails("");
                            UpdateDatasourceRequest req     = new UpdateDatasourceRequest(details);
                            // Update credentials through gateway
                            await pbiClient.Gateways.UpdateDatasourceAsync(gatewayId, datasourceId, req);
                        }
                    }
                }
            }
            return;
        }
コード例 #4
0
        public IActionResult UpdateDatasource(UpdateDatasourceMap updateDatasourceMap)
        {
            try
            {
                // Capture credential details
                var credentialDetails = powerBIService.GetCredentialDetails(updateDatasourceMap.GatewayId, updateDatasourceMap.CredentialType, updateDatasourceMap.Credentials, updateDatasourceMap.PrivacyLevel);

                // Create datasource request body for Updating the datasource
                var dataSourceRequest = new UpdateDatasourceRequest {
                    CredentialDetails = credentialDetails
                };

                // Update gateway credentials
                powerBIService.UpdateDatasource(updateDatasourceMap.GatewayId, updateDatasourceMap.DatasourceId, dataSourceRequest);

                return(Ok("Successfully updated data source credentials"));
            }
            catch (HttpOperationException ex)
            {
                Console.Error.WriteLine(ex.Message + "\n\n" + ex.StackTrace);

                // Set status code of the response
                Response.StatusCode = (Int32)ex.Response.StatusCode;
                return(Content("Error " + Response.StatusCode + " " + ex.Message));
            }
            catch (Exception ex)
            {
                Console.Error.WriteLine(ex.Message + "\n\n" + ex.StackTrace);
                return(BadRequest(ex.Message));
            }
        }
コード例 #5
0
        /// <summary>
        /// Update data source credentials on Workspace defined <paramref name="config"/> using the Power BI client instance defined on <paramref name="client"/>.
        /// </summary>
        /// <param name="config">Power BI Workspace and datasource configuration</param>
        /// <param name="client">Power BI client instance</param>
        static void UpdateDatasourceCredentials(PowerBIWorkspaceConfig config, PowerBIClient client)
        {
            var userName = config.DatasourceUserID;
            var password = config.DatasourceUserPassword;

            var credentials = string.Format("{{\"credentialData\":[{{\"name\":\"username\",\"value\":{0}}},{{\"name\":\"password\",\"value\":{1}}}]}}", JsonConvert.SerializeObject(userName), JsonConvert.SerializeObject(password));

            var requestBody = new UpdateDatasourceRequest
            {
                CredentialDetails = new CredentialDetails
                {
                    Credentials         = credentials,
                    CredentialType      = "Basic",
                    EncryptedConnection = "Encrypted",
                    EncryptionAlgorithm = "None",
                    PrivacyLevel        = "None"
                }
            };

            var reports = client.Reports.GetReportsInGroupAsync(config.PowerBIGroupID).Result;

            foreach (Report report in reports.Value)
            {
                Console.WriteLine("Report Name: {0}, Group ID: {1}, Updating to Datasource UserName: {2}", report.Name, config.PowerBIGroupID, config.DatasourceUserID);

                try
                {
                    var dataSources  = client.Datasets.GetDatasources(config.PowerBIGroupID, report.DatasetId).Value;
                    var gatewayId    = dataSources.First().GatewayId;
                    var datasourceId = dataSources.First().DatasourceId;

                    client.Gateways.UpdateDatasource(gatewayId, datasourceId, requestBody);

                    Console.WriteLine("Success");
                }
                catch (Exception ex)
                {
                    Console.WriteLine("Error {0}", ex.Message);
                }
            }
        }
コード例 #6
0
        public static void PatchAnonymousDatasourceCredentials(Guid WorkspaceId, string DatasetId)
        {
            PowerBIClient pbiClient   = TokenManager.GetPowerBiClient(requiredScopes);
            var           datasources = pbiClient.Datasets.GetDatasourcesInGroup(WorkspaceId, DatasetId).Value;

            foreach (var datasource in datasources)
            {
                if (datasource.DatasourceType == "OAuth" || datasource.DatasourceType == "File")
                {
                    var datasourceId = datasource.DatasourceId;
                    var gatewayId    = datasource.GatewayId;
                    // create credentials for Azure SQL database log in
                    CredentialDetails details = new CredentialDetails {
                        CredentialType = CredentialType.Anonymous,
                        PrivacyLevel   = PrivacyLevel.None
                    };
                    UpdateDatasourceRequest req = new UpdateDatasourceRequest(details);
                    // Update credentials through gateway
                    pbiClient.Gateways.UpdateDatasourceAsync((Guid)gatewayId, (Guid)datasourceId, req);
                }
            }
            return;
        }
コード例 #7
0
        public async Task UpdateCredentials(Guid groupId)
        {
            using (var client = await _pbiService.GetPowerBIClient())
            {
                var datasources = await client.Datasets.GetDatasetsInGroupAsync(groupId);

                var dataSetId       = datasources.Value.First().Id;
                var gatewayresponse = await client.Datasets.GetDatasourcesInGroupAsync(groupId, dataSetId);

                var gateway = gatewayresponse.Value.First();

                if (gateway == null)
                {
                    throw new Exception($"Gateway is null for {groupId}");
                }

                var updateRequest = new UpdateDatasourceRequest
                {
                    CredentialDetails = new CredentialDetails(
                        new BasicCredentials(_settings.DatabaseUserName, _settings.DatabasePassword),
                        PrivacyLevel.Private,
                        EncryptedConnection.Encrypted)
                };

                try
                {
                    client.Gateways.UpdateDatasource(gateway.GatewayId.Value, gateway.DatasourceId.Value, updateRequest);
                }
                catch (Exception ex)
                {
                    throw new Exception(ex.Message);
                }
            }

            return;
        }
コード例 #8
0
 /// <summary>
 /// Updates the credentials of the specified datasource from the specified
 /// gateway.
 /// </summary>
 /// <remarks>
 /// &lt;br/&gt;To get the gateway and datasource ids for a dataset, use [Get
 /// Datasources](/rest/api/power-bi/datasets/getdatasources) or [Get
 /// Datasources In
 /// Group](/rest/api/power-bi/datasets/getdatasourcesingroup)&lt;br/&gt;&lt;br/&gt;**Required
 /// scope**: Dataset.ReadWrite.All &lt;br/&gt;To set the permissions scope, see
 /// [Register an
 /// app](https://docs.microsoft.com/power-bi/developer/register-app).
 /// </remarks>
 /// <param name='operations'>
 /// The operations group for this extension method.
 /// </param>
 /// <param name='gatewayId'>
 /// The gateway id
 /// </param>
 /// <param name='datasourceId'>
 /// The datasource id
 /// </param>
 /// <param name='updateDatasourceRequest'>
 /// The update datasource request
 /// </param>
 /// <param name='cancellationToken'>
 /// The cancellation token.
 /// </param>
 public static async Task <object> UpdateDatasourceAsync(this IGateways operations, string gatewayId, string datasourceId, UpdateDatasourceRequest updateDatasourceRequest, CancellationToken cancellationToken = default(CancellationToken))
 {
     using (var _result = await operations.UpdateDatasourceWithHttpMessagesAsync(gatewayId, datasourceId, updateDatasourceRequest, null, cancellationToken).ConfigureAwait(false))
     {
         return(_result.Body);
     }
 }
コード例 #9
0
 /// <summary>
 /// Updates the credentials of the specified datasource from the specified
 /// gateway.
 /// </summary>
 /// <remarks>
 /// &lt;br/&gt;To get the gateway and datasource ids for a dataset, use [Get
 /// Datasources](/rest/api/power-bi/datasets/getdatasources) or [Get
 /// Datasources In
 /// Group](/rest/api/power-bi/datasets/getdatasourcesingroup)&lt;br/&gt;&lt;br/&gt;**Required
 /// scope**: Dataset.ReadWrite.All &lt;br/&gt;To set the permissions scope, see
 /// [Register an
 /// app](https://docs.microsoft.com/power-bi/developer/register-app).
 /// </remarks>
 /// <param name='operations'>
 /// The operations group for this extension method.
 /// </param>
 /// <param name='gatewayId'>
 /// The gateway id
 /// </param>
 /// <param name='datasourceId'>
 /// The datasource id
 /// </param>
 /// <param name='updateDatasourceRequest'>
 /// The update datasource request
 /// </param>
 public static object UpdateDatasource(this IGateways operations, string gatewayId, string datasourceId, UpdateDatasourceRequest updateDatasourceRequest)
 {
     return(operations.UpdateDatasourceAsync(gatewayId, datasourceId, updateDatasourceRequest).GetAwaiter().GetResult());
 }
コード例 #10
0
 /// <summary>
 /// Updates the credentials of the specified datasource from the specified
 /// gateway.
 /// </summary>
 /// <remarks>
 /// &lt;br/&gt;To get the gateway and datasource ids for a dataset, use [Get
 /// Datasources](/rest/api/power-bi/datasets/getdatasources) or [Get
 /// Datasources In
 /// Group](/rest/api/power-bi/datasets/getdatasourcesingroup)&lt;br/&gt;&lt;br/&gt;**Required
 /// scope**: Dataset.ReadWrite.All &lt;br/&gt;To set the permissions scope, see
 /// [Register an
 /// app](https://docs.microsoft.com/power-bi/developer/register-app).
 /// </remarks>
 /// <param name='operations'>
 /// The operations group for this extension method.
 /// </param>
 /// <param name='gatewayId'>
 /// The gateway id
 /// </param>
 /// <param name='datasourceId'>
 /// The datasource id
 /// </param>
 /// <param name='updateDatasourceRequest'>
 /// The update datasource request
 /// </param>
 /// <param name='cancellationToken'>
 /// The cancellation token.
 /// </param>
 public static async Task UpdateDatasourceAsync(this IGatewaysOperations operations, System.Guid gatewayId, System.Guid datasourceId, UpdateDatasourceRequest updateDatasourceRequest, CancellationToken cancellationToken = default(CancellationToken))
 {
     (await operations.UpdateDatasourceWithHttpMessagesAsync(gatewayId, datasourceId, updateDatasourceRequest, null, cancellationToken).ConfigureAwait(false)).Dispose();
 }
コード例 #11
0
 /// <summary>
 /// Updates the credentials of the specified datasource from the specified
 /// gateway.
 /// </summary>
 /// <remarks>
 /// &lt;br/&gt;To get the gateway and datasource ids for a dataset, use [Get
 /// Datasources](/rest/api/power-bi/datasets/getdatasources) or [Get
 /// Datasources In
 /// Group](/rest/api/power-bi/datasets/getdatasourcesingroup)&lt;br/&gt;&lt;br/&gt;**Required
 /// scope**: Dataset.ReadWrite.All &lt;br/&gt;To set the permissions scope, see
 /// [Register an
 /// app](https://docs.microsoft.com/power-bi/developer/register-app).
 /// </remarks>
 /// <param name='operations'>
 /// The operations group for this extension method.
 /// </param>
 /// <param name='gatewayId'>
 /// The gateway id
 /// </param>
 /// <param name='datasourceId'>
 /// The datasource id
 /// </param>
 /// <param name='updateDatasourceRequest'>
 /// The update datasource request
 /// </param>
 public static void UpdateDatasource(this IGatewaysOperations operations, System.Guid gatewayId, System.Guid datasourceId, UpdateDatasourceRequest updateDatasourceRequest)
 {
     operations.UpdateDatasourceAsync(gatewayId, datasourceId, updateDatasourceRequest).GetAwaiter().GetResult();
 }