public override async Task <ActionResponse> ExecuteActionAsync(ActionRequest request) { string serverName = request.DataStore.GetValue("ASServerUrl"); string username = request.DataStore.GetValue("ASAdmin") ?? AzureUtility.GetEmailFromToken(request.DataStore.GetJson("AzureToken")); string password = request.DataStore.GetValue("ASAdminPassword"); string connectionString = string.Empty; if (serverName.ToLowerInvariant().StartsWith("asazure")) { connectionString += "Provider=MSOLAP;"; } connectionString += $"Data Source={serverName};"; if (!string.IsNullOrEmpty(password)) { connectionString += $"User ID={username};Password={password};Persist Security Info=True; Impersonation Level=Impersonate;UseADALCache=0"; } try { Server server = new Server(); server.Connect(connectionString); request.DataStore.AddToDataStore("ASConnectionString", connectionString, DataStoreType.Private); } catch (Exception ex) { return(new ActionResponse(ActionStatus.FailureExpected, null, ex, null)); } return(new ActionResponse(ActionStatus.Success)); }
public async Task GetAzureEmail() { DataStore dataStore = new DataStore(); var datastore = await AAD.GetUserTokenFromPopup(); var emailAddress = AzureUtility.GetEmailFromToken(datastore.GetJson("AzureToken")); }
public override async Task <ActionResponse> ExecuteActionAsync(ActionRequest request) { var azureToken = request.DataStore.GetJson("AzureToken")["access_token"].ToString(); var subscription = request.DataStore.GetJson("SelectedSubscription")["SubscriptionId"].ToString(); var resourceGroup = request.DataStore.GetValue("SelectedResourceGroup"); var deploymentName = request.DataStore.GetValue("DeploymentName") ?? "AzureMLDeployment"; var workspaceName = request.DataStore.GetValue("WorkspaceName"); var storageAccountName = request.DataStore.GetValue("StorageAccountName"); var planName = request.DataStore.GetValue("PlanName") ?? "azuremlplan"; var skuName = request.DataStore.GetValue("SkuName") ?? "S1"; var skuTier = request.DataStore.GetValue("SkuTier") ?? "Standard"; var skuCapacity = request.DataStore.GetValue("SkuCapacity") ?? "1"; // Get email address var param = new AzureArmParameterGenerator(); param.AddStringParam("name", workspaceName); param.AddStringParam("resourcegroup", resourceGroup); param.AddStringParam("subscription", subscription); param.AddStringParam("newStorageAccountName", storageAccountName); param.AddStringParam("planName", planName); param.AddStringParam("skuName", skuName); param.AddStringParam("skuTier", skuTier); param.AddStringParam("skuCapacity", skuCapacity); param.AddStringParam("ownerEmail", AzureUtility.GetEmailFromToken(request.DataStore.GetJson("AzureToken"))); SubscriptionCloudCredentials creds = new TokenCloudCredentials(subscription, azureToken); Microsoft.Azure.Management.Resources.ResourceManagementClient client = new ResourceManagementClient(creds); var armTemplate = JsonUtility.GetJObjectFromJsonString(System.IO.File.ReadAllText(Path.Combine(request.ControllerModel.SiteCommonFilePath, "Service/Arm/azureml.json"))); var armParamTemplate = JsonUtility.GetJObjectFromObject(param.GetDynamicObject()); armTemplate.Remove("parameters"); armTemplate.Add("parameters", armParamTemplate["parameters"]); var deployment = new Microsoft.Azure.Management.Resources.Models.Deployment() { Properties = new DeploymentPropertiesExtended() { Template = armTemplate.ToString(), Parameters = JsonUtility.GetEmptyJObject().ToString() } }; var validate = client.Deployments.ValidateAsync(resourceGroup, deploymentName, deployment, new CancellationToken()).Result; if (!validate.IsValid) { return(new ActionResponse(ActionStatus.Failure, JsonUtility.GetJObjectFromObject(validate), null, DefaultErrorCodes.DefaultErrorCode, $"Azure:{validate.Error.Message} Details:{validate.Error.Details}")); } var deploymentItem = client.Deployments.CreateOrUpdateAsync(resourceGroup, deploymentName, deployment, new CancellationToken()).Result; return(new ActionResponse(ActionStatus.Success)); }
public override async Task <ActionResponse> ExecuteActionAsync(ActionRequest request) { string code = request.DataStore.GetValue("code"); string aadTenant = request.DataStore.GetValue("AADTenant"); string oauthType = (request.DataStore.GetValue("oauthType") ?? string.Empty).ToLowerInvariant(); JObject token = new JObject(); token = oauthType == "mscrm" ? AzureTokenUtility.GetTokenForResourceFromCode(Constants.AzureManagementCoreApi, Constants.MsCrmClientId, aadTenant, request.Info.WebsiteRootUrl, code) : AzureTokenUtility.GetTokenForResourceFromCode(oauthType, aadTenant, request.Info.WebsiteRootUrl, code); if (token.SelectToken("error") != null) { return(new ActionResponse(ActionStatus.Failure, token, null, DefaultErrorCodes.DefaultLoginFailed, token.SelectToken("error_description")?.ToString())); } var emailAddress = AzureUtility.GetEmailFromToken(token); if (emailAddress.Contains('#')) { emailAddress = emailAddress.Split('#')?[1]; } request.DataStore.AddToDataStore("EmailAddress", emailAddress); switch (oauthType) { case "keyvault": request.DataStore.AddToDataStore("AzureTokenKV", token); break; case "as": request.DataStore.AddToDataStore("AzureTokenAS", token); break; case "mscrm": JObject crmToken = AzureTokenUtility.GetTokenForResourceFromExistingToken(oauthType, request.Info.WebsiteRootUrl, token, Constants.MsCrmResource); request.DataStore.AddToDataStore("MsCrmToken", crmToken); request.DataStore.AddToDataStore("AzureToken", token); break; case "powerbi": request.DataStore.AddToDataStore("PBIToken", token); request.DataStore.AddToDataStore("DirectoryName", emailAddress.Split('@').Last()); request.DataStore.AddToDataStore("PowerBITenantId", AzureUtility.GetTenantFromToken(token)); break; default: request.DataStore.AddToDataStore("AzureToken", token); var tenantId = AzureUtility.GetTenantFromToken(token); var directoryName = emailAddress.Split('@').Last(); request.DataStore.AddToDataStore("DirectoryName", directoryName); request.DataStore.AddToDataStore("PowerBITenantId", tenantId); break; } return(new ActionResponse(ActionStatus.Success, token, true)); }
public override async Task <ActionResponse> ExecuteActionAsync(ActionRequest request) { var token = request.DataStore.GetJson("AzureToken", "access_token"); string admin = request.DataStore.GetValue("ASAdmin") ?? AzureUtility.GetEmailFromToken(request.DataStore.GetJson("AzureToken")); var obj = JsonUtility.GetJObjectFromStringValue(admin); return(new ActionResponse(ActionStatus.Success, obj)); }
public override async Task <ActionResponse> ExecuteActionAsync(ActionRequest request) { string azureToken = request.DataStore.GetJson("AzureToken", "access_token"); string subscription = request.DataStore.GetJson("SelectedSubscription", "SubscriptionId"); string resourceGroup = request.DataStore.GetValue("SelectedResourceGroup"); string serverName = request.DataStore.GetValue("ASServerName") ?? "analysisserver-" + RandomGenerator.GetRandomLowerCaseCharacters(5); string location = request.DataStore.GetValue("ASLocation") ?? "westus"; string sku = request.DataStore.GetValue("ASSku") ?? "D1"; string admin = AzureUtility.GetEmailFromToken(request.DataStore.GetJson("AzureToken")); SubscriptionCloudCredentials creds = new TokenCloudCredentials(subscription, azureToken); AzureArmParameterGenerator param = new AzureArmParameterGenerator(); param.AddStringParam("name", serverName); param.AddStringParam("location", location); param.AddStringParam("sku", sku); param.AddStringParam("admin", admin); string armTemplatefilePath = File.ReadAllText(request.ControllerModel.SiteCommonFilePath + "/service/arm/NewAzureAS.json"); string template = AzureUtility.GetAzureArmParameters(armTemplatefilePath, param); await AzureUtility.ValidateAndDeployArm(creds, resourceGroup, "ASDeployment", template); await AzureUtility.WaitForArmDeployment(creds, resourceGroup, "ASDeployment"); AzureHttpClient client = new AzureHttpClient(azureToken, subscription, resourceGroup); var response = await client.ExecuteWithSubscriptionAndResourceGroupAsync(HttpMethod.Get , $"/providers/Microsoft.AnalysisServices/servers/{serverName}/" , "2016-05-16" , string.Empty , new Dictionary <string, string>()); string responseBody = await response.Content.ReadAsStringAsync(); if (!response.IsSuccessStatusCode) { return(new ActionResponse(ActionStatus.Failure)); } JObject responseObj = JsonUtility.GetJObjectFromJsonString(responseBody); request.DataStore.AddToDataStore("ASServerUrl", responseObj["properties"]["serverFullName"], DataStoreType.Public); request.Logger.LogResource(request.DataStore, responseObj["properties"]["serverFullName"].ToString(), DeployedResourceType.AzureAnalysisServices, CreatedBy.BPST, DateTime.UtcNow.ToString("o"), string.Empty, sku); return(new ActionResponse(ActionStatus.Success, responseObj)); }
public override async Task <ActionResponse> ExecuteActionAsync(ActionRequest request) { string connectionString = request.DataStore.GetValue("ASConnectionString"); AzureUtility.GetEmailFromToken(request.DataStore.GetJson("AzureToken")); string asDatabase = request.DataStore.GetValue("ASDatabase"); Server server = new Server(); server.Connect(connectionString); // Process var db = server.Databases.Find(asDatabase); db.Model.RequestRefresh(RefreshType.Full); db.Model.SaveChanges(); return(new ActionResponse(ActionStatus.Success)); }
public override async Task <ActionResponse> ExecuteActionAsync(ActionRequest request) { string code = request.DataStore.GetValue("code"); string aadTenant = request.DataStore.GetValue("AADTenant"); string oauthType = (request.DataStore.GetLastValue("oauthType") ?? string.Empty).ToLowerInvariant(); string api; string clientId; string tokenUrl; switch (oauthType) { case "powerbi": tokenUrl = string.Format(Constants.AzureTokenUri, aadTenant); clientId = Constants.MicrosoftClientIdPowerBI; api = Constants.PowerBIService; break; case "mscrm": api = Constants.AzureManagementCoreApi; clientId = Constants.MsCrmClientId; tokenUrl = string.Format(Constants.AzureTokenUri, aadTenant); break; case "keyvault": api = Constants.AzureManagementCoreApi; clientId = Constants.MicrosoftClientIdCrm; tokenUrl = string.Format(Constants.AzureTokenUri, aadTenant); break; default: api = Constants.AzureManagementCoreApi; clientId = Constants.MicrosoftClientId; tokenUrl = string.Format(Constants.AzureTokenUri, aadTenant); break; } JObject primaryResponse = null; JObject obj = null; using (HttpClient client = new HttpClient()) { var builder = GetTokenUri(code, api, request.Info.WebsiteRootUrl, clientId); var content = new StringContent(builder.ToString()); content.Headers.ContentType = new MediaTypeHeaderValue("application/x-www-form-urlencoded"); var response = await client.PostAsync(new Uri(tokenUrl), content).Result.Content.ReadAsStringAsync(); primaryResponse = JsonUtility.GetJsonObjectFromJsonString(response); obj = new JObject(new JProperty("AzureToken", primaryResponse)); if (primaryResponse.SelectToken("error") != null) { return(new ActionResponse(ActionStatus.Failure, obj, null, DefaultErrorCodes.DefaultLoginFailed, primaryResponse.SelectToken("error_description")?.ToString())); } } var emailAddress = AzureUtility.GetEmailFromToken(primaryResponse); if (emailAddress.Contains('#')) { emailAddress = emailAddress.Split('#')?[1]; } request.DataStore.AddToDataStore("EmailAddress", emailAddress); switch (oauthType) { case "keyvault": request.DataStore.AddToDataStore("AzureTokenKV", primaryResponse); break; case "mscrm": JObject crmToken = RetrieveCrmToken(primaryResponse["refresh_token"].ToString(), request.Info.WebsiteRootUrl, request.DataStore); request.DataStore.AddToDataStore("MsCrmToken", crmToken); request.DataStore.AddToDataStore("AzureToken", primaryResponse); break; default: request.DataStore.AddToDataStore("AzureToken", primaryResponse); var tenantId = new JwtSecurityToken(primaryResponse["id_token"].ToString()) .Claims.First(e => e.Type.ToLowerInvariant() == "tid") .Value; var directoryName = emailAddress.Split('@').Last(); request.DataStore.AddToDataStore("DirectoryName", directoryName); request.DataStore.AddToDataStore("PowerBITenantId", tenantId); break; } return(new ActionResponse(ActionStatus.Success, obj, true)); }