Search in sources :

Example 21 with AppServicePlan

use of com.microsoft.azure.management.appservice.AppServicePlan in project azure-sdk-for-java by Azure.

the class ManageFunctionAppSourceControl method runSample.

/**
     * 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 suffix = ".azurewebsites.net";
    final String app1Name = SdkContext.randomResourceName("webapp1-", 20);
    final String app2Name = SdkContext.randomResourceName("webapp2-", 20);
    final String app3Name = SdkContext.randomResourceName("webapp3-", 20);
    final String app4Name = SdkContext.randomResourceName("webapp4-", 20);
    final String app1Url = app1Name + suffix;
    final String app2Url = app2Name + suffix;
    final String app3Url = app3Name + suffix;
    final String app4Url = app4Name + suffix;
    final String rgName = SdkContext.randomResourceName("rg1NEMV_", 24);
    try {
        //============================================================
        // Create a function app with a new app service plan
        System.out.println("Creating function app " + app1Name + " in resource group " + rgName + "...");
        FunctionApp app1 = azure.appServices().functionApps().define(app1Name).withRegion(Region.US_WEST).withNewResourceGroup(rgName).create();
        System.out.println("Created function app " + app1.name());
        Utils.print(app1);
        //============================================================
        // Deploy to app 1 through FTP
        System.out.println("Deploying a function app to " + app1Name + " through FTP...");
        Utils.uploadFileToFtp(app1.getPublishingProfile(), "host.json", ManageFunctionAppSourceControl.class.getResourceAsStream("/square-function-app/host.json"));
        Utils.uploadFileToFtp(app1.getPublishingProfile(), "square/function.json", ManageFunctionAppSourceControl.class.getResourceAsStream("/square-function-app/square/function.json"));
        Utils.uploadFileToFtp(app1.getPublishingProfile(), "square/index.js", ManageFunctionAppSourceControl.class.getResourceAsStream("/square-function-app/square/index.js"));
        System.out.println("Deployment square app to function app " + app1.name() + " completed");
        Utils.print(app1);
        // warm up
        System.out.println("Warming up " + app1Url + "/api/square...");
        post("http://" + app1Url + "/api/square", "625");
        Thread.sleep(5000);
        System.out.println("CURLing " + app1Url + "/api/square...");
        System.out.println("Square of 625 is " + post("http://" + app1Url + "/api/square", "625"));
        //============================================================
        // Create a second function app with local git source control
        System.out.println("Creating another function app " + app2Name + " in resource group " + rgName + "...");
        AppServicePlan plan = azure.appServices().appServicePlans().getById(app1.appServicePlanId());
        FunctionApp app2 = azure.appServices().functionApps().define(app2Name).withExistingAppServicePlan(plan).withExistingResourceGroup(rgName).withExistingStorageAccount(app1.storageAccount()).withLocalGitSourceControl().create();
        System.out.println("Created function app " + app2.name());
        Utils.print(app2);
        //============================================================
        // Deploy to app 2 through local Git
        System.out.println("Deploying a local Tomcat source to " + app2Name + " through Git...");
        PublishingProfile profile = app2.getPublishingProfile();
        Git git = Git.init().setDirectory(new File(ManageFunctionAppSourceControl.class.getResource("/square-function-app/").getPath())).call();
        git.add().addFilepattern(".").call();
        git.commit().setMessage("Initial commit").call();
        PushCommand command = git.push();
        command.setRemote(profile.gitUrl());
        command.setCredentialsProvider(new UsernamePasswordCredentialsProvider(profile.gitUsername(), profile.gitPassword()));
        command.setRefSpecs(new RefSpec("master:master"));
        command.setForce(true);
        command.call();
        System.out.println("Deployment to function app " + app2.name() + " completed");
        Utils.print(app2);
        // warm up
        System.out.println("Warming up " + app2Url + "/api/square...");
        post("http://" + app2Url + "/api/square", "725");
        Thread.sleep(5000);
        System.out.println("CURLing " + app2Url + "/api/square...");
        System.out.println("Square of 725 is " + post("http://" + app2Url + "/api/square", "725"));
        //============================================================
        // Create a 3rd function app with a public GitHub repo in Azure-Samples
        System.out.println("Creating another function app " + app3Name + "...");
        FunctionApp app3 = azure.appServices().functionApps().define(app3Name).withExistingAppServicePlan(plan).withNewResourceGroup(rgName).withExistingStorageAccount(app2.storageAccount()).defineSourceControl().withPublicGitRepository("https://github.com/jianghaolu/square-function-app-sample").withBranch("master").attach().create();
        System.out.println("Created function app " + app3.name());
        Utils.print(app3);
        // warm up
        System.out.println("Warming up " + app3Url + "/api/square...");
        post("http://" + app3Url + "/api/square", "825");
        Thread.sleep(5000);
        System.out.println("CURLing " + app3Url + "/api/square...");
        System.out.println("Square of 825 is " + post("http://" + app3Url + "/api/square", "825"));
        //============================================================
        // Create a 4th function app with a personal GitHub repo and turn on continuous integration
        System.out.println("Creating another function app " + app4Name + "...");
        FunctionApp app4 = azure.appServices().functionApps().define(app4Name).withExistingAppServicePlan(plan).withExistingResourceGroup(rgName).withExistingStorageAccount(app3.storageAccount()).create();
        System.out.println("Created function app " + app4.name());
        Utils.print(app4);
        // warm up
        System.out.println("Warming up " + app4Url + "...");
        curl("http://" + app4Url);
        Thread.sleep(5000);
        System.out.println("CURLing " + app4Url + "...");
        System.out.println(curl("http://" + app4Url));
        return true;
    } catch (Exception e) {
        System.err.println(e.getMessage());
        e.printStackTrace();
    } finally {
        try {
            System.out.println("Deleting Resource Group: " + rgName);
            azure.resourceGroups().beginDeleteByName(rgName);
            System.out.println("Deleted Resource Group: " + rgName);
        } 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;
}
Also used : UsernamePasswordCredentialsProvider(org.eclipse.jgit.transport.UsernamePasswordCredentialsProvider) Git(org.eclipse.jgit.api.Git) RefSpec(org.eclipse.jgit.transport.RefSpec) PublishingProfile(com.microsoft.azure.management.appservice.PublishingProfile) FunctionApp(com.microsoft.azure.management.appservice.FunctionApp) File(java.io.File) PushCommand(org.eclipse.jgit.api.PushCommand) IOException(java.io.IOException) AppServicePlan(com.microsoft.azure.management.appservice.AppServicePlan)

Example 22 with AppServicePlan

use of com.microsoft.azure.management.appservice.AppServicePlan in project azure-tools-for-java by Microsoft.

the class WebAppDeployDialog method fillAppServiceDetails.

private void fillAppServiceDetails() {
    validated();
    int selectedRow = table.getSelectionIndex();
    if (selectedRow < 0) {
        browserAppServiceDetailes.setText("");
        btnDelete.setEnabled(false);
        return;
    }
    btnDelete.setEnabled(true);
    String appServiceName = table.getItems()[selectedRow].getText(0);
    WebAppDetails wad = webAppDetailsMap.get(appServiceName);
    SubscriptionDetail sd = wad.subscriptionDetail;
    AppServicePlan asp = wad.appServicePlan;
    StringBuilder sb = new StringBuilder();
    sb.append("<div style=\"margin: 7px 7px 7px 7px; " + browserFontStyle + "\">");
    sb.append(String.format("App Service name:&nbsp;<b>%s</b>;<br/>", appServiceName));
    sb.append(String.format("Subscription name:&nbsp;<b>%s</b>;&nbsp;id:&nbsp;<b>%s</b>;<br/>", sd.getSubscriptionName(), sd.getSubscriptionId()));
    String aspName = asp == null ? "N/A" : asp.name();
    String aspPricingTier = asp == null ? "N/A" : asp.pricingTier().toString();
    sb.append(String.format("App Service Plan name:&nbsp;<b>%s</b>;&nbsp;Pricing tier:&nbsp;<b>%s</b>;<br/>", aspName, aspPricingTier));
    String link = buildSiteLink(wad.webApp, null);
    sb.append(String.format("Link:&nbsp;<a href=\"%s\">%s</a><br/>", link, link));
    sb.append(String.format("<a href=\"%s\">%s</a>", ftpLinkString, "Show FTP deployment credentials"));
    sb.append("</div>");
    browserAppServiceDetailes.setText(sb.toString());
}
Also used : WebAppDetails(com.microsoft.azuretools.utils.WebAppUtils.WebAppDetails) SubscriptionDetail(com.microsoft.azuretools.authmanage.models.SubscriptionDetail) AppServicePlan(com.microsoft.azure.management.appservice.AppServicePlan)

Example 23 with AppServicePlan

use of com.microsoft.azure.management.appservice.AppServicePlan in project azure-tools-for-java by Microsoft.

the class AppServiceCreateDialog method fillAppServicePlansDetails.

protected void fillAppServicePlansDetails() {
    DefaultComboBoxModel<AppServicePlanAdapter> cbModel = (DefaultComboBoxModel<AppServicePlanAdapter>) comboBoxAppServicePlan.getModel();
    AppServicePlanAdapter aspa = (AppServicePlanAdapter) cbModel.getSelectedItem();
    if (aspa == null || aspa.getAdapted() == null) {
        // empty || <create new>
        labelFieldAppServicePlanLocation.setText(textNotAvailable);
        labelFieldAppServicePlanTier.setText(textNotAvailable);
        return;
    } else {
        AppServicePlan asp = aspa.getAdapted();
        labelFieldAppServicePlanLocation.setText(asp.region().label());
        labelFieldAppServicePlanTier.setText(asp.pricingTier().toString());
    }
}
Also used : AppServicePlan(com.microsoft.azure.management.appservice.AppServicePlan)

Example 24 with AppServicePlan

use of com.microsoft.azure.management.appservice.AppServicePlan in project azure-tools-for-java by Microsoft.

the class WebAppDeployDialog method doFillTable.

private void doFillTable() {
    Map<SubscriptionDetail, List<ResourceGroup>> srgMap = AzureModel.getInstance().getSubscriptionToResourceGroupMap();
    Map<ResourceGroup, List<WebApp>> rgwaMap = AzureModel.getInstance().getResourceGroupToWebAppMap();
    Map<ResourceGroup, List<AppServicePlan>> rgaspMap = AzureModel.getInstance().getResourceGroupToAppServicePlanMap();
    if (srgMap == null)
        throw new NullPointerException("srgMap is null");
    if (rgwaMap == null)
        throw new NullPointerException("rgwaMap is null");
    if (rgaspMap == null)
        throw new NullPointerException("rgaspMap is null");
    cleanTable();
    DefaultTableModel tableModel = (DefaultTableModel) table.getModel();
    for (SubscriptionDetail sd : srgMap.keySet()) {
        if (!sd.isSelected())
            continue;
        Map<String, WebAppUtils.AspDetails> aspMap = new HashMap<>();
        try {
            for (ResourceGroup rg : srgMap.get(sd)) {
                for (AppServicePlan asp : rgaspMap.get(rg)) {
                    aspMap.put(asp.id(), new WebAppUtils.AspDetails(asp, rg));
                }
            }
        } catch (NullPointerException npe) {
            LOGGER.error("NPE while initializing App Service Plan map", npe);
        }
        for (ResourceGroup rg : srgMap.get(sd)) {
            for (WebApp wa : rgwaMap.get(rg)) {
                if (wa.javaVersion() != JavaVersion.OFF) {
                    tableModel.addRow(new String[] { wa.name(), wa.javaVersion().toString(), wa.javaContainer() + " " + wa.javaContainerVersion(), wa.resourceGroupName() });
                } else {
                    tableModel.addRow(new String[] { wa.name(), "Off", "N/A", wa.resourceGroupName() });
                }
                WebAppDetails webAppDetails = new WebAppDetails();
                webAppDetails.webApp = wa;
                webAppDetails.subscriptionDetail = sd;
                webAppDetails.resourceGroup = rg;
                webAppDetails.appServicePlan = aspMap.get(wa.appServicePlanId()).getAsp();
                webAppDetails.appServicePlanResourceGroup = aspMap.get(wa.appServicePlanId()).getRg();
                webAppWebAppDetailsMap.put(wa.name(), webAppDetails);
            }
        }
    }
    table.setModel(tableModel);
    if (tableModel.getRowCount() > 0)
        tableModel.fireTableDataChanged();
}
Also used : WebAppDetails(com.microsoft.azuretools.utils.WebAppUtils.WebAppDetails) HashMap(java.util.HashMap) DefaultTableModel(javax.swing.table.DefaultTableModel) WebAppUtils(com.microsoft.azuretools.utils.WebAppUtils) AppServicePlan(com.microsoft.azure.management.appservice.AppServicePlan) SubscriptionDetail(com.microsoft.azuretools.authmanage.models.SubscriptionDetail) List(java.util.List) ResourceGroup(com.microsoft.azure.management.resources.ResourceGroup) WebApp(com.microsoft.azure.management.appservice.WebApp)

Aggregations

AppServicePlan (com.microsoft.azure.management.appservice.AppServicePlan)24 WebApp (com.microsoft.azure.management.appservice.WebApp)15 File (java.io.File)8 IOException (java.io.IOException)8 SubscriptionDetail (com.microsoft.azuretools.authmanage.models.SubscriptionDetail)7 ResourceGroup (com.microsoft.azure.management.resources.ResourceGroup)6 PublishingProfile (com.microsoft.azure.management.appservice.PublishingProfile)5 Git (org.eclipse.jgit.api.Git)5 PushCommand (org.eclipse.jgit.api.PushCommand)5 RefSpec (org.eclipse.jgit.transport.RefSpec)5 UsernamePasswordCredentialsProvider (org.eclipse.jgit.transport.UsernamePasswordCredentialsProvider)5 WebAppDetails (com.microsoft.azuretools.utils.WebAppUtils.WebAppDetails)4 AppServiceDomain (com.microsoft.azure.management.appservice.AppServiceDomain)3 FunctionApp (com.microsoft.azure.management.appservice.FunctionApp)3 TrafficManagerProfile (com.microsoft.azure.management.trafficmanager.TrafficManagerProfile)3 HashMap (java.util.HashMap)3 WebAppUtils (com.microsoft.azuretools.utils.WebAppUtils)2 List (java.util.List)2 DefaultTableModel (javax.swing.table.DefaultTableModel)2 ValidationInfo (com.intellij.openapi.ui.ValidationInfo)1