public override async Task <ActionResponse> ExecuteActionAsync(ActionRequest request) { string rowBatchSize = request.DataStore.GetValue("RowBatchSize"); string sapClient = request.DataStore.GetValue("SapClient"); string sapHost = request.DataStore.GetValue("SapHost"); string sapLanguage = request.DataStore.GetValue("SapLanguage"); string sapRouterString = request.DataStore.GetValue("SapRouterString"); string sapSystemId = request.DataStore.GetValue("SapSystemId"); string sapSystemNumber = request.DataStore.GetValue("SapSystemNumber"); var sqlConnectionStrings = request.DataStore.GetAllValues("SqlConnectionString"); string sqlConnectionString = sqlConnectionStrings != null ? sqlConnectionStrings[0] : string.Empty; if (!string.IsNullOrEmpty(sqlConnectionString)) { SqlCredentials sqlCredentials = SqlUtility.GetSqlCredentialsFromConnectionString(sqlConnectionString); sqlCredentials.Username = string.Empty; sqlCredentials.Password = string.Empty; sqlConnectionString = SqlUtility.GetConnectionString(sqlCredentials); } string jsonDestination = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData), JSON_PATH); (new FileInfo(jsonDestination)).Directory.Create(); JObject config = new JObject( new JProperty("RowBatchSize", rowBatchSize), new JProperty("SapClient", sapClient), new JProperty("SapHost", sapHost), new JProperty("SapLanguage", sapLanguage), new JProperty("SapRouterString", sapRouterString), new JProperty("SapSystemId", sapSystemId), new JProperty("SapSystemNumber", sapSystemNumber), new JProperty("SqlConnectionString", sqlConnectionString) ); using (StreamWriter file = File.CreateText(jsonDestination)) { using (JsonTextWriter writer = new JsonTextWriter(file)) { config.WriteTo(writer); } } return(new ActionResponse(ActionStatus.Success, JsonUtility.GetEmptyJObject())); }
public static void RunSqlCommandWithoutTransaction(SqlCredentials creds, string commandText) { var connString = SqlUtility.GetConnectionString(creds).Replace("Connect Timeout=15", "Connect Timeout=60"); using (var cn = new SqlConnection(connString)) { cn.Open(); using (var command = cn.CreateCommand()) { command.CommandTimeout = 60; command.CommandText = commandText; command.Transaction = null; command.ExecuteNonQuery(); } cn.Close(); } }
public override async Task <ActionResponse> ExecuteActionAsync(ActionRequest request) { var sqlCreds = request.DataStore.GetJson("SqlCredentials"); string server = sqlCreds.SelectToken("Server")?.ToString(); string user = sqlCreds.SelectToken("User")?.ToString(); string password = sqlCreds.SelectToken("Password")?.ToString(); var auth = sqlCreds.SelectToken("AuthType")?.ToString(); var database = sqlCreds.SelectToken("Database")?.ToString(); SqlCredentials credentials = new SqlCredentials() { Server = server, Username = user, Password = password, Authentication = auth.EqualsIgnoreCase("Windows") ? SqlAuthentication.Windows : SqlAuthentication.SQL, Database = string.IsNullOrEmpty(database) ? "master" : database }; var response = SqlUtility.GetConnectionString(credentials); return(new ActionResponse(ActionStatus.Success, JsonUtility.CreateJObjectWithValueFromObject(response), true)); }
public override async Task <ActionResponse> ExecuteActionAsync(ActionRequest request) { var azureToken = request.DataStore.GetJson("AzureToken", "access_token"); var subscription = request.DataStore.GetJson("SelectedSubscription", "SubscriptionId"); var resourceGroup = request.DataStore.GetValue("SelectedResourceGroup"); var location = request.DataStore.GetLastValue("SqlLocation") ?? "westus"; var databaseTier = request.DataStore.GetLastValue("SqlSku") ?? "S1"; string server = request.DataStore.GetJson("SqlCredentials").SelectToken("Server")?.ToString(); string user = request.DataStore.GetJson("SqlCredentials").SelectToken("User")?.ToString(); string password = request.DataStore.GetJson("SqlCredentials").SelectToken("Password")?.ToString(); var database = request.DataStore.GetJson("SqlCredentials").SelectToken("Database")?.ToString(); string serverWithoutExtension = server.Replace(".database.windows.net", string.Empty); var param = new AzureArmParameterGenerator(); param.AddStringParam("SqlServerName", serverWithoutExtension); param.AddStringParam("SqlDatabaseName", database); param.AddStringParam("Username", user); param.AddParameter("Password", "securestring", password); param.AddStringParam("Sku", databaseTier); param.AddStringParam("SqlLocation", location); var armTemplate = JsonUtility.GetJObjectFromJsonString(System.IO.File.ReadAllText(Path.Combine(request.ControllerModel.SiteCommonFilePath, "Service/Arm/sqlserveranddatabase.json"))); var armParamTemplate = JsonUtility.GetJObjectFromObject(param.GetDynamicObject()); armTemplate.Remove("parameters"); armTemplate.Add("parameters", armParamTemplate["parameters"]); SubscriptionCloudCredentials creds = new TokenCloudCredentials(subscription, azureToken); ResourceManagementClient client = new ResourceManagementClient(creds); var deployment = new Microsoft.Azure.Management.Resources.Models.Deployment() { Properties = new DeploymentPropertiesExtended() { Template = armTemplate.ToString(), Parameters = JsonUtility.GetEmptyJObject().ToString() } }; string deploymentName = "SqlDatabaseDeployment"; var validate = await client.Deployments.ValidateAsync(resourceGroup, deploymentName, deployment, new CancellationToken()); if (!validate.IsValid) { return(new ActionResponse( ActionStatus.Failure, JsonUtility.GetJObjectFromObject(validate), null, DefaultErrorCodes.DefaultErrorCode, $"Azure:{validate.Error.Message} Details:{validate.Error.Details}")); } var deploymentItem = await client.Deployments.CreateOrUpdateAsync(resourceGroup, deploymentName, deployment, new CancellationToken()); // Wait for deployment while (true) { Thread.Sleep(5000); var status = await client.Deployments.GetAsync(resourceGroup, deploymentName, new CancellationToken()); var operations = await client.DeploymentOperations.ListAsync(resourceGroup, deploymentName, new DeploymentOperationsListParameters()); var provisioningState = status.Deployment.Properties.ProvisioningState; if (provisioningState == "Accepted" || provisioningState == "Running") { continue; } if (provisioningState == "Succeeded") { break; } var operation = operations.Operations.First(p => p.Properties.ProvisioningState == ProvisioningState.Failed); var operationFailed = await client.DeploymentOperations.GetAsync(resourceGroup, deploymentName, operation.OperationId); return(new ActionResponse(ActionStatus.Failure, JsonUtility.GetJObjectFromObject(operationFailed), null, DefaultErrorCodes.DefaultErrorCode, operationFailed.Operation.Properties.StatusMessage)); } SqlCredentials credentials = new SqlCredentials() { Server = server, Username = user, Password = password, Authentication = SqlAuthentication.SQL, Database = database }; var connectionStringResponse = SqlUtility.GetConnectionString(credentials); return(new ActionResponse(ActionStatus.Success, JsonUtility.CreateJObjectWithValueFromObject(connectionStringResponse), true)); }