/**
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for
* license information.
*/
package com.microsoft.azure.management.appservice.samples;
import com.microsoft.azure.management.Azure;
import com.microsoft.azure.management.appservice.AppServicePlan;
import com.microsoft.azure.management.appservice.PricingTier;
import com.microsoft.azure.management.appservice.JavaVersion;
import com.microsoft.azure.management.appservice.WebApp;
import com.microsoft.azure.management.appservice.WebContainer;
import com.microsoft.azure.management.resources.fluentcore.arm.Region;
import com.microsoft.azure.management.resources.fluentcore.utils.SdkContext;
import com.microsoft.azure.management.samples.Utils;
import com.microsoft.rest.LogLevel;
import java.io.File;
/**
* Azure App Service basic sample for managing web apps.
* - Create 3 web apps under the same new app service plan:
* - 1, 2 are in the same resource group, 3 in a different one
* - Stop and start 1, restart 2
* - Add Java support to app 3
* - List web apps
* - Delete a web app
*/
public final class ManageWebAppBasic {
/**
* Main function which runs the actual sample.
* @param azure instance of the azure client
* @return true if sample runs successfully
*/
public static boolean runSample(Azure azure) {
// New resources
final String app1Name = SdkContext.randomResourceName("webapp1-", 20);
final String app2Name = SdkContext.randomResourceName("webapp2-", 20);
final String app3Name = SdkContext.randomResourceName("webapp3-", 20);
final String rg1Name = SdkContext.randomResourceName("rg1NEMV_", 24);
final String rg2Name = SdkContext.randomResourceName("rg2NEMV_", 24);
try {
//============================================================
// Create a web app with a new app service plan
System.out.println("Creating web app " + app1Name + " in resource group " + rg1Name + "...");
WebApp app1 = azure.webApps()
.define(app1Name)
.withRegion(Region.US_WEST)
.withNewResourceGroup(rg1Name)
.withNewWindowsPlan(PricingTier.STANDARD_S1)
.create();
System.out.println("Created web app " + app1.name());
Utils.print(app1);
//============================================================
// Create a second web app with the same app service plan
System.out.println("Creating another web app " + app2Name + " in resource group " + rg1Name + "...");
AppServicePlan plan = azure.appServices().appServicePlans().getById(app1.appServicePlanId());
WebApp app2 = azure.webApps()
.define(app2Name)
.withExistingWindowsPlan(plan)
.withExistingResourceGroup(rg1Name)
.create();
System.out.println("Created web app " + app2.name());
Utils.print(app2);
//============================================================
// Create a third web app with the same app service plan, but
// in a different resource group
System.out.println("Creating another web app " + app3Name + " in resource group " + rg2Name + "...");
WebApp app3 = azure.webApps()
.define(app3Name)
.withExistingWindowsPlan(plan)
.withNewResourceGroup(rg2Name)
.create();
System.out.println("Created web app " + app3.name());
Utils.print(app3);
//============================================================
// stop and start app1, restart app 2
System.out.println("Stopping web app " + app1.name());
app1.stop();
System.out.println("Stopped web app " + app1.name());
Utils.print(app1);
System.out.println("Starting web app " + app1.name());
app1.start();
System.out.println("Started web app " + app1.name());
Utils.print(app1);
System.out.println("Restarting web app " + app2.name());
app2.restart();
System.out.println("Restarted web app " + app2.name());
Utils.print(app2);
//============================================================
// Configure app 3 to have Java 8 enabled
System.out.println("Adding Java support to web app " + app3Name + "...");
app3.update()
.withJavaVersion(JavaVersion.JAVA_8_NEWEST)
.withWebContainer(WebContainer.TOMCAT_8_0_NEWEST)
.apply();
System.out.println("Java supported on web app " + app3Name + "...");
//=============================================================
// List web apps
System.out.println("Printing list of web apps in resource group " + rg1Name + "...");
for (WebApp webApp : azure.webApps().listByResourceGroup(rg1Name)) {
Utils.print(webApp);
}
System.out.println("Printing list of web apps in resource group " + rg2Name + "...");
for (WebApp webApp : azure.webApps().listByResourceGroup(rg2Name)) {
Utils.print(webApp);
}
//=============================================================
// Delete a web app
System.out.println("Deleting web app " + app1Name + "...");
azure.webApps().deleteByResourceGroup(rg1Name, app1Name);
System.out.println("Deleted web app " + app1Name + "...");
System.out.println("Printing list of web apps in resource group " + rg1Name + " again...");
for (WebApp webApp : azure.webApps().listByResourceGroup(rg1Name)) {
Utils.print(webApp);
}
return true;
} catch (Exception e) {
System.err.println(e.getMessage());
e.printStackTrace();
} finally {
try {
System.out.println("Deleting Resource Group: " + rg1Name);
azure.resourceGroups().beginDeleteByName(rg1Name);
System.out.println("Deleted Resource Group: " + rg1Name);
System.out.println("Deleting Resource Group: " + rg2Name);
azure.resourceGroups().beginDeleteByName(rg2Name);
System.out.println("Deleted Resource Group: " + rg2Name);
} catch (NullPointerException npe) {
System.out.println("Did not create any resources in Azure. No clean up is necessary");
} catch (Exception g) {
g.printStackTrace();
}
}
return false;
}
/**
* Main entry point.
* @param args the parameters
*/
public static void main(String[] args) {
try {
//=============================================================
// Authenticate
final File credFile = new File(System.getenv("AZURE_AUTH_LOCATION"));
Azure azure = Azure
.configure()
.withLogLevel(LogLevel.BODY_AND_HEADERS)
.authenticate(credFile)
.withDefaultSubscription();
// Print selected subscription
System.out.println("Selected subscription: " + azure.subscriptionId());
runSample(azure);
} catch (Exception e) {
System.out.println(e.getMessage());
e.printStackTrace();
}
}
}