コード例 #1
0
        /// <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);
        }
コード例 #2
0
        /// <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);
                                }
        }
コード例 #3
0
        /// <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));
        }
コード例 #4
0
        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);
            }
        }
コード例 #5
0
        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);
                }
        }
コード例 #6
0
        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);
                }
        }
コード例 #7
0
        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);
            }
        }
コード例 #9
0
        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();
        }