/// <summary> /// Provisions all the components in the <see cref="DevOpsFlexDbContext"/>. /// </summary> /// <param name="context">The database context that we want to provision components from.</param> /// <param name="subscriptionId">The subscription Id where we want to provision in.</param> /// <param name="settingsPath">The path to the settings file with the management certificate.</param> /// <returns>The async <see cref="Task"/> wrapper.</returns> public static Task[] ProvisionAll(this DevOpsFlexDbContext context, string subscriptionId, string settingsPath) { Contract.Requires(context != null); Contract.Requires(!string.IsNullOrEmpty(subscriptionId)); Contract.Requires(!string.IsNullOrEmpty(settingsPath)); var azureSubscription = new AzureSubscription(settingsPath, subscriptionId); var azureCert = new X509Certificate2(Convert.FromBase64String(azureSubscription.ManagementCertificate)); var computeClient = new ComputeManagementClient(new CertificateCloudCredentials(subscriptionId, azureCert)); var networkClient = new NetworkManagementClient(new CertificateCloudCredentials(subscriptionId, azureCert)); var sbClient = new ServiceBusManagementClient(new CertificateCloudCredentials(subscriptionId, azureCert)); var sqlClient = new SqlManagementClient(new CertificateCloudCredentials(subscriptionId, azureCert)); var storageClient = new StorageManagementClient(new CertificateCloudCredentials(subscriptionId, azureCert)); var webSiteClient = new WebSiteManagementClient(new CertificateCloudCredentials(subscriptionId, azureCert)); var foo = context.Components.Include(o => o.System).OfType <AzureCloudService>().ToList().ProvisionAllAsync(computeClient) .Concat(context.Components.Include(o => o.System).OfType <AzureCloudService>().ToList().ReserveAllIpsAsync(networkClient)) .Concat(context.Components.Include(o => o.System).OfType <AzureServiceBusNamespace>().ToList().ProvisionAllAsync(sbClient)) .Concat(context.Components.Include(o => o.System).OfType <SqlAzureDb>().ToList().ProvisionAllAsync(sqlClient)) .Concat(context.Components.Include(o => o.System).OfType <AzureStorageContainer>().ToList().ProvisionAllAsync(storageClient)) .Concat(context.Components.Include(o => o.System).OfType <AzureWebSite>().ToList().ProvisionAllAsync(webSiteClient)) .ToArray(); return(foo); }
/// <summary> /// Provisions all the components in the <see cref="DevOpsFlexDbContext"/>. /// </summary> /// <param name="context">The database context that we want to provision components from.</param> /// <param name="subscriptionId">The subscription Id where we want to provision in.</param> /// <param name="settingsPath">The path to the settings file with the management certificate.</param> /// <returns>The async <see cref="Task"/> wrapper.</returns> public static async Task ProvisionAllAsync(this DevOpsFlexDbContext context, string subscriptionId, string settingsPath) { Contract.Requires(context != null); Contract.Requires(string.IsNullOrEmpty(subscriptionId)); Contract.Requires(string.IsNullOrEmpty(settingsPath)); var azureSubscription = new AzureSubscription(settingsPath, subscriptionId); var azureCert = new X509Certificate2(Convert.FromBase64String(azureSubscription.ManagementCertificate)); using (var computeClient = new ComputeManagementClient(new CertificateCloudCredentials(subscriptionId, azureCert))) using (var networkClient = new NetworkManagementClient(new CertificateCloudCredentials(subscriptionId, azureCert))) using (var sbClient = new ServiceBusManagementClient(new CertificateCloudCredentials(subscriptionId, azureCert))) using (var sqlClient = new SqlManagementClient(new CertificateCloudCredentials(subscriptionId, azureCert))) using (var storageClient = new StorageManagementClient(new CertificateCloudCredentials(subscriptionId, azureCert))) using (var webSiteClient = new WebSiteManagementClient(new CertificateCloudCredentials(subscriptionId, azureCert))) { var tasks = new[] { context.Components.OfType <AzureCloudService>().ToList().ProvisionAllAsync(computeClient), context.Components.OfType <AzureCloudService>().ToList().ReserveAllIpsAsync(networkClient), context.Components.OfType <AzureServiceBusNamespace>().ToList().ProvisionAllAsync(sbClient), context.Components.OfType <SqlAzureDb>().ToList().ProvisionAllAsync(sqlClient), context.Components.OfType <AzureStorageContainer>().ToList().ProvisionAllAsync(storageClient), context.Components.OfType <AzureWebSite>().ToList().ProvisionAllAsync(webSiteClient) }; await Task.WhenAll(tasks); } }
/// <summary> /// Provisions all the components in the <see cref="DevOpsFlexDbContext"/>. /// </summary> /// <param name="context">The database context that we want to provision components from.</param> /// <param name="subscriptionId">The subscription Id where we want to provision in.</param> /// <param name="settingsPath">The path to the settings file with the management certificate.</param> /// <returns>The async <see cref="Task"/> wrapper.</returns> public static async Task ProvisionAllAsync(this DevOpsFlexDbContext context, string subscriptionId, string settingsPath) { Contract.Requires(context != null); Contract.Requires(!string.IsNullOrEmpty(subscriptionId)); Contract.Requires(!string.IsNullOrEmpty(settingsPath)); await Task.WhenAll(context.ProvisionAll(subscriptionId, settingsPath)); }
public async Task Test_DbContext_ProvisionAll_End2End() { FlexDataConfiguration.Branch = "Dev"; FlexDataConfiguration.Configuration = "DJ"; using (var context = new DevOpsFlexDbContext()) { await context.ProvisionAllAsync(ManagementClient.SubscriptionId, ManagementClient.SettingsPath); } }
public async Task Test_AzureStorageContainer_ProvisionAll_End2End() { FlexDataConfiguration.Branch = "Main"; FlexDataConfiguration.Configuration = "djfr"; using (var client = ManagementClient.CreateStorageClient()) using (var context = new DevOpsFlexDbContext()) { await context.Components.OfType <AzureStorageContainer>().ProvisionAllAsync(client); } }
public async Task Test_SqlFirewallRule_ProvisionAll_End2End() { FlexDataConfiguration.Branch = "Main"; FlexDataConfiguration.Configuration = "MO"; using (var client = ManagementClient.CreateSqlClient()) using (var context = new DevOpsFlexDbContext()) { await context.SqlFirewallRules.ProvisionAllAsync(client); } }
public async Task Test_AzureCloudService_ReserveAllIps_End2End() { FlexDataConfiguration.Branch = "Main"; FlexDataConfiguration.Configuration = "MO"; using (var client = ManagementClient.CreateNetworkClient()) using (var context = new DevOpsFlexDbContext()) { await context.Components.OfType <AzureCloudService>().ReserveAllIpsAsync(client); } }
public async Task Test_DbContext_ProvisionAll_End2End() { FlexDataConfiguration.Branch = "Main"; FlexDataConfiguration.Configuration = "PS"; FlexStreams.BuildEventsObservable.Subscribe(e => Debug.WriteLine($"[DevOpsFlex] {e.Message}")); using (var context = new DevOpsFlexDbContext()) { await context.ProvisionAllAsync(ManagementClient.SubscriptionId, ManagementClient.SettingsPath); } }
public async Task Test_AzureServiceBusNamespace_ProvisionAll_End2End() { FlexDataConfiguration.Branch = "Main"; FlexDataConfiguration.Configuration = "MO"; FlexDataConfiguration.UseNaming(new LegacyFctSbNaming()); using (var client = ManagementClient.CreateServiceBusClient()) using (var context = new DevOpsFlexDbContext()) { await context.Components.OfType <AzureServiceBusNamespace>().ProvisionAllAsync(client); } }
public void Test_SqlAzureDb_ProvisionAll_End2End() { FlexDataConfiguration.Branch = "Main"; FlexDataConfiguration.Configuration = "djfr"; using (var client = ManagementClient.CreateSqlClient()) using (var context = new DevOpsFlexDbContext()) { var tasks = context.Components.OfType <SqlAzureDb>().ProvisionAllAsync(client); Task.WaitAll(tasks.ToArray()); } }
public void Test_SqlFirewallRule_ProvisionAll_End2End() { FlexDataConfiguration.Branch = "Main"; FlexDataConfiguration.Configuration = "MO"; using (var client = ManagementClient.CreateSqlClient()) using (var context = new DevOpsFlexDbContext()) { var tasks = context.SqlFirewallRules.ProvisionAllAsync(client); Task.WaitAll(tasks.ToArray()); } }
/// <summary> /// Processes the Push-DevOpsFlexConfiguration commandlet synchronously. /// </summary> protected override void ProcessRecord() { FlexDataConfiguration.Branch = Branch; FlexDataConfiguration.Configuration = Configuration; FlexStreams.UseThreadQueue(ThreadAdapter); using (EventStream.Subscribe(e => WriteObject(e.Message))) using (var context = new DevOpsFlexDbContext(SqlConnectionString)) { ProcessAsyncWork(context.ProvisionAll(SubscriptionId, SettingsPath)); } WriteObject("Push-DevOpsFlexConfiguration completed!"); base.ProcessRecord(); }