protected bool FindPricingTier(string priceTierValue, out PricingTier result) { var found = _priceTierMapper.TryGetValue(priceTierValue, out PricingTier v); result = v; return(found); }
public static PricingTier GetNextTier(PricingTier tier) { if (tier.Equals(PricingTier.FreeF1) || tier.Equals(PricingTier.SharedD1)) { return(PricingTier.StandardS1); } else if (tier.Equals(PricingTier.BasicB1) || tier.Equals(PricingTier.BasicB2)) { return(PricingTier.BasicB3); } else if (tier.Equals(PricingTier.StandardS1) || tier.Equals(PricingTier.StandardS2)) { return(PricingTier.StandardS3); } else if (tier.Equals(PricingTier.PremiumP1) || tier.Equals(PricingTier.PremiumP2)) { return(PricingTier.PremiumP3); } else if (tier.Equals(PricingTier.PremiumP1v2) || tier.Equals(PricingTier.PremiumP2v2)) { return(PricingTier.PremiumP3v2); } else { return(PricingTier.StandardS3); } }
public static async Task <HttpResponseMessage> Run([HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequestMessage req, TraceWriter log, ExecutionContext executionContext) { log.Info("SetAppService started"); string setAppServiceRequestJson = await req.Content.ReadAsStringAsync(); if (!string.IsNullOrEmpty(setAppServiceRequestJson)) { var setAppServiceRequest = JsonConvert.DeserializeObject <SetAppServicePlanRequest>(setAppServiceRequestJson); var appServicePlanName = "#YOURAPPSERVICEPLANNAME#"; var authFile = $"{Directory.GetParent(executionContext.FunctionDirectory).FullName}\\my.azureauth"; var azure = Azure.Authenticate(authFile).WithDefaultSubscription(); var appServicePlan = azure.AppServices.AppServicePlans.List().FirstOrDefault(x => x.Name == appServicePlanName); log.Info(executionContext.FunctionDirectory); PricingTier pricingTier = new PricingTier(setAppServiceRequest.Tier, setAppServiceRequest.Size); //Basic, B1 int capacity = setAppServiceRequest.Capacity; appServicePlan?.Update() .WithPricingTier(pricingTier) .WithCapacity(capacity) .Apply(); return(req.CreateResponse(HttpStatusCode.OK, "SetAppService Successfully Competed")); } else { return(req.CreateResponse(HttpStatusCode.BadRequest, "Something went wrong!")); } }
public ActionResult DeleteConfirmed(int id) { PricingTier pricingTier = db.PricingTiers.Find(id); db.PricingTiers.Remove(pricingTier); db.SaveChanges(); return(RedirectToAction("Index")); }
private async Task <IFunctionApp> CreateFunctionAppsAsync(IResourceGroup resourceGroup) { var storageAccount = await StorageManager .Authenticate(_azureCredentials, _configuration.SubscriptionId) .StorageAccounts .Define(_configuration.ResourceNamePrefix.ToLowerInvariant() + "storage") .WithRegion(_configuration.RegionName) .WithExistingResourceGroup(resourceGroup) .WithSku(StorageAccountSkuType.Standard_LRS) .CreateAsync(); Console.WriteLine($"Successfully created or updated storage account '{storageAccount.Name}'"); var appServiceManager = AppServiceManager.Authenticate(_azureCredentials, _configuration.SubscriptionId); var appServicePlan = await appServiceManager .AppServicePlans .Define(_configuration.ResourceNamePrefix + "Plan") .WithRegion(_configuration.RegionName) .WithExistingResourceGroup(resourceGroup) .WithPricingTier(PricingTier.FromSkuDescription(new SkuDescription("Y1", "Dynamic", "Y1", "Y", 0))) .WithOperatingSystem(OperatingSystem.Windows) .CreateAsync(); Console.WriteLine($"Successfully created or updated app service plan '{appServicePlan.Name}'"); var functionApp = await appServiceManager .FunctionApps .Define(_configuration.ResourceNamePrefix + "Api") .WithExistingAppServicePlan(appServicePlan) .WithExistingResourceGroup(resourceGroup) .WithExistingStorageAccount(storageAccount) .WithSystemAssignedManagedServiceIdentity() .DefineAuthentication() .WithDefaultAuthenticationProvider(BuiltInAuthenticationProvider.AzureActiveDirectory) .WithActiveDirectory(_configuration.CertificateAuthorityClientId, $"https://login.microsoftonline.com/{_configuration.TenantId}/v2.0") .Attach() .WithAppSetting("StorageConnectionString", await BuildStorageConnectionString()) .WithAppSetting("StorageContainerName", _configuration.FunctionStorageContainerName) .WithAppSetting("RootCertificateId", BuildRootCertificateId()) .CreateAsync(); Console.WriteLine($"Successfully created or updated function app '{functionApp.Name}'"); return(functionApp); async Task <string> BuildStorageConnectionString() { var storageAccountKeys = await storageAccount.GetKeysAsync(); var storageAccountKeyValue = storageAccountKeys[0].Value; return($"DefaultEndpointsProtocol=https;AccountName={storageAccount.Name};AccountKey={storageAccountKeyValue};EndpointSuffix=core.windows.net"); } string BuildRootCertificateId() => $"https://{_configuration.ResourceNamePrefix.ToLowerInvariant()}vault.vault.azure.net/certificates/{_configuration.RootCertificateName.ToLowerInvariant()}"; }
public ActionResult Edit([Bind(Include = "Id,Name,Description,Price,OrderInPricing,PricingId, CreateTime")] PricingTier pricingTier) { if (ModelState.IsValid) { pricingTier.UpdateTime = DateTime.Now; db.Entry(pricingTier).State = EntityState.Modified; db.SaveChanges(); return(RedirectToAction("Index")); } ViewBag.PricingId = new SelectList(db.Pricings, "Id", "Name", pricingTier.PricingId); return(View(pricingTier)); }
public static void ScaleUpDown(IAppServicePlan appServicePlan) { WriteSection("Applying a possible scale up/down fix"); PricingTier _default = appServicePlan.PricingTier; PricingTier _next = GetNextTier(_default); Log("Scaling Up App Service Plan: " + _next.ToString()); appServicePlan.Update().WithPricingTier(_next).Apply(); LetsWaitALittle(); Log("Scaling Down App Service Plan: " + _default.ToString()); appServicePlan.Update().WithPricingTier(_default).Apply(); LetsWaitALittle(); }
public ActionResult Create([Bind(Include = "Id,Name,Description,Price,OrderInPricing,PricingId")] PricingTier pricingTier) { if (ModelState.IsValid) { pricingTier.CreateTime = DateTime.Now; db.PricingTiers.Add(pricingTier); db.SaveChanges(); return(RedirectToAction("Index")); } ViewBag.PricingId = new SelectList(db.Pricings, "Id", "Name", pricingTier.PricingId); return(View(pricingTier)); }
// GET: PricingTier/Details/5 public ActionResult Details(int?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } PricingTier pricingTier = db.PricingTiers.Find(id); if (pricingTier == null) { return(HttpNotFound()); } return(View(pricingTier)); }
// GET: PricingTier/Edit/5 public ActionResult Edit(int?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } PricingTier pricingTier = db.PricingTiers.Find(id); if (pricingTier == null) { return(HttpNotFound()); } ViewBag.PricingId = new SelectList(db.Pricings, "Id", "Name", pricingTier.PricingId); return(View(pricingTier)); }
public void Validate() { ValidateRegionName(); AppServicePricingTier = GetAppServicePlanPricingTier(); }
private void PrepareResource(AzureAppService resource) { Init(); PricingTier tier = PricingTier.FreeF1; switch (resource.PerformanceTier) { case "FreeF1": tier = PricingTier.FreeF1; break; case "BasicB1": tier = PricingTier.BasicB1; break; case "BasicB2": tier = PricingTier.BasicB2; break; case "BasicB3": tier = PricingTier.BasicB3; break; case "PremiumP1": tier = PricingTier.PremiumP1; break; case "PremiumP2": tier = PricingTier.PremiumP2; break; case "PremiumP3": tier = PricingTier.PremiumP3; break; case "SharedD1": tier = PricingTier.SharedD1; break; case "StandardS1": tier = PricingTier.StandardS1; break; case "StandardS2": tier = PricingTier.StandardS2; break; case "StandardS3": tier = PricingTier.StandardS3; break; } Console.WriteLine("Making app service: " + resource.Name); var app = _azure.WebApps .Define(Guid.NewGuid().ToString("N").Substring(0, 8)) .WithRegion(ConfigProvider.GetValue("AzureRegion")) .WithExistingResourceGroup(_resourceGroup.Name) .WithNewWindowsPlan(tier) .Create(); PreparedResources.Add(resource); Console.WriteLine("Done: " + resource.Name); _webAppList.Add(resource, app); }