public async Task StartNewSpeedTest(SpeedTestJob speedTest) { var mgr = await Authenticate(speedTest.SubscriptionId); var account = CloudStorageAccount.Parse(Environment.GetEnvironmentVariable("AzureWebJobsStorage")).Credentials; var accountName = account.AccountName; var pass = account.ExportBase64EncodedKey(); await new AzureResourceService().EnsureResourceGroup(speedTest.SubscriptionId, speedTest.ResourceGroupName, speedTest.Region); var containerGroup = await mgr.ContainerGroups.Define(speedTest.Id).WithRegion(speedTest.Region).WithExistingResourceGroup(speedTest.ResourceGroupName) .WithLinux().WithPublicImageRegistryOnly() //.WithoutVolume() .WithEmptyDirectoryVolume("azurefiles") .DefineContainerInstance("minio").WithImage("minio/minio") .WithInternalTcpPort(9000).WithStartingCommandLine("minio", "gateway", "azure") .WithEnvironmentVariables(new Dictionary <string, string> { { "MINIO_ACCESS_KEY", accountName }, { "MINIO_SECRET_KEY", pass } }) .WithCpuCoreCount(0.5) .WithMemorySizeInGB(0.5) .Attach() .DefineContainerInstance("speedtest").WithImage("sjkp/sitespeedtest") .WithoutPorts() .WithVolumeMountSetting("azurefiles", "/sitespeed.io") .WithEnvironmentVariables(new Dictionary <string, string>() { { "SITESPEEDIO_OUTPUT", "test" }, { "SITESPEEDIO_MINIO_HOST", "http://127.0.0.1:9000" }, { "SITESPEEDIO_MINIO_LOGIN", accountName }, { "SITESPEEDIO_MINIO_PASS", pass } }) .WithStartingCommandLine("/start.sh", speedTest.Uri.ToString()).Attach() .WithRestartPolicy(ContainerGroupRestartPolicy.Never).CreateAsync(); }
public static async Task <IActionResult> StartTest( [HttpTrigger(AuthorizationLevel.Function, "post", Route = null)] HttpRequestMessage req, [OrchestrationClient] DurableOrchestrationClient starter, ILogger log) { log.LogInformation("C# HTTP trigger function processed a request."); var body = await req.Content.ReadAsAsync <StartSpeedTest>(); var region = Region.Create(body.Region); if (!Region.Values.Contains(region)) { return(new BadRequestObjectResult($"Invalid region, valid values are {string.Join(",", Region.Values)}")); } if (!Uri.TryCreate(body.WebSite, UriKind.Absolute, out var url)) { return(new BadRequestObjectResult("Url invalid")); } var id = Guid.NewGuid(); string name = MakeName(region, url, id); var job = new SpeedTestJob() { Id = id.ToString(), Region = region, ResourceGroupName = name, SubscriptionId = subscriptionId, Uri = url }; await new AciService().StartNewSpeedTest(job); return(new OkObjectResult(job)); }