Esempio n. 1
0
        public async Task <string> RunActivity(
            [ActivityTrigger] Project project,
            ILogger log)
        {
            if (project is null)
            {
                throw new ArgumentNullException(nameof(project));
            }

            using (log.BeginProjectScope(project))
            {
                try
                {
                    var template = new ProjectCreateTemplate();

                    template.Parameters["ProviderName"] = Assembly.GetExecutingAssembly().GetName().Name;
                    template.Parameters["ProjectName"]  = project.Name;

                    var deployment = await azureDeploymentService
                                     .DeployResourceGroupTemplateAsync(template, project.ResourceGroup.SubscriptionId, project.ResourceGroup.Name)
                                     .ConfigureAwait(false);

                    return(deployment.ResourceId);
                }
                catch (Exception exc)
                {
                    log.LogError(exc, $"{nameof(ProjectCreateActivity)} failed: {exc.Message}");

                    throw exc.AsSerializable();
                }
            }
        }
Esempio n. 2
0
        public async Task <string> RunActivity(
            [ActivityTrigger] Project project,
            ILogger log)
        {
            if (project is null)
            {
                throw new ArgumentNullException(nameof(project));
            }

            using (log.BeginProjectScope(project))
            {
                try
                {
                    var vnetPrefix = "10.0.0.0/16";
                    var snetPrefix = new object[]
                    {
                        new
                        {
                            subnetname   = "TeamCloud",
                            subnetprefix = "10.0.0.0/24"
                        },
                        new
                        {
                            subnetname   = "AzureBastionSubnet",
                            subnetprefix = "10.0.1.0/24"
                        }
                    };

                    var template = new ProjectCreateTemplate();

                    template.Parameters["ProjectName"] = project.Name;
                    //template.Parameters["Repositories"] = Array.Empty<object>();
                    //template.Parameters["ImageGallery"] = "";
                    template.Parameters["LabBastionHostEnabled"]        = false;
                    template.Parameters["LabMarketplaceEnabled"]        = false;
                    template.Parameters["LabPublicEnvironmentsEnabled"] = false;
                    template.Parameters["LabPublicArtifactsEnabled"]    = false;
                    template.Parameters["LabVNetPrefix"] = vnetPrefix;
                    template.Parameters["LabSNetPrefix"] = snetPrefix;

                    var deployment = await azureDeploymentService
                                     .DeployResourceGroupTemplateAsync(template, project.ResourceGroup.SubscriptionId, project.ResourceGroup.Name)
                                     .ConfigureAwait(false);

                    return(deployment.ResourceId);
                }
                catch (Exception exc)
                {
                    log.LogError(exc, $"{nameof(ProjectCreateActivity)} failed: {exc.Message}");

                    throw exc.AsSerializable();
                }
            }
        }
Esempio n. 3
0
        public async Task <Dictionary <string, string> > RunActivity(
            [ActivityTrigger] ProviderProjectCreateCommand command,
            ILogger log)
        {
            if (command is null)
            {
                throw new ArgumentNullException(nameof(command));
            }

            var vnetPrefix = "10.0.0.0/16";
            var snetPrefix = new object[]
            {
                new
                {
                    subnetname   = "TeamCloud",
                    subnetprefix = "10.0.0.0/24"
                },
                new
                {
                    subnetname   = "AzureBastionSubnet",
                    subnetprefix = "10.0.1.0/24"
                }
            };

            var template = new ProjectCreateTemplate();

            template.Parameters["ProjectName"] = command.Payload.Name;
            //template.Parameters["Repositories"] = Array.Empty<object>();
            //template.Parameters["ImageGallery"] = "";
            template.Parameters["LabPublicEnvironments"] = "Enabled";
            template.Parameters["LabPublicArtifacts"]    = "Enabled";
            template.Parameters["LabVNetPrefix"]         = vnetPrefix;
            template.Parameters["LabSNetPrefix"]         = snetPrefix;

            var deployment = await azureDeploymentService
                             .DeployResourceGroupTemplateAsync(template, command.Payload.ResourceGroup.SubscriptionId, command.Payload.ResourceGroup.ResourceGroupName)
                             .ConfigureAwait(false);

            var deploymentOutput = await deployment
                                   .WaitAndGetOutputAsync(throwOnError : true)
                                   .ConfigureAwait(false);

            return(deploymentOutput
                   .ToDictionary(kvp => kvp.Key, kvp => kvp.Value?.ToString()));
        }
Esempio n. 4
0
        public async Task <Dictionary <string, string> > RunActivity(
            [ActivityTrigger] ProviderProjectCreateCommand command,
            ILogger log)
        {
            if (command is null)
            {
                throw new ArgumentNullException(nameof(command));
            }

            var template = new ProjectCreateTemplate();

            template.Parameters["ProjectName"] = command.Payload.Name;

            var deployment = await azureDeploymentService
                             .DeployResourceGroupTemplateAsync(template, command.Payload.ResourceGroup.SubscriptionId, command.Payload.ResourceGroup.ResourceGroupName)
                             .ConfigureAwait(false);

            var deploymentOutput = await deployment
                                   .WaitAndGetOutputAsync(throwOnError : true)
                                   .ConfigureAwait(false);

            return(deploymentOutput
                   .ToDictionary(kvp => kvp.Key, kvp => kvp.Value?.ToString()));
        }