diff --git a/azure-webapp-maven-plugin/src/main/java/com/microsoft/azure/maven/webapp/WebAppUtils.java b/azure-webapp-maven-plugin/src/main/java/com/microsoft/azure/maven/webapp/WebAppUtils.java index f8e098744b..c96dc4eb85 100644 --- a/azure-webapp-maven-plugin/src/main/java/com/microsoft/azure/maven/webapp/WebAppUtils.java +++ b/azure-webapp-maven-plugin/src/main/java/com/microsoft/azure/maven/webapp/WebAppUtils.java @@ -62,4 +62,17 @@ public static boolean isPrivateRegistryImage(final ContainerSetting containerSet return StringUtils.isNotEmpty(containerSetting.getServerId()) && StringUtils.isNotEmpty(containerSetting.getRegistryUrl()); } + + /** + * Work Around: + * When a web app is created from Azure Portal, there are hidden tags associated with the app. + * It will be messed up when calling "update" API. + * An issue is logged at https://github.com/Azure/azure-sdk-for-java/issues/1755 . + * Remove all tags here to make it work. + * + * @param app + */ + public static void clearTags(final WebApp app) { + app.inner().withTags(null); + } } diff --git a/azure-webapp-maven-plugin/src/main/java/com/microsoft/azure/maven/webapp/handlers/JavaRuntimeHandlerImpl.java b/azure-webapp-maven-plugin/src/main/java/com/microsoft/azure/maven/webapp/handlers/JavaRuntimeHandlerImpl.java index 3a9babc4c9..bd84c6675a 100644 --- a/azure-webapp-maven-plugin/src/main/java/com/microsoft/azure/maven/webapp/handlers/JavaRuntimeHandlerImpl.java +++ b/azure-webapp-maven-plugin/src/main/java/com/microsoft/azure/maven/webapp/handlers/JavaRuntimeHandlerImpl.java @@ -32,6 +32,7 @@ public WebApp.DefinitionStages.WithCreate defineAppWithRunTime() throws MojoExec public WebApp.Update updateAppRuntime() throws MojoExecutionException { final WebApp app = mojo.getWebApp(); WebAppUtils.assureWindowsWebApp(app); + WebAppUtils.clearTags(app); final WebApp.Update update = app.update(); update.withJavaVersion(mojo.getJavaVersion()) diff --git a/azure-webapp-maven-plugin/src/main/java/com/microsoft/azure/maven/webapp/handlers/NullRuntimeHandlerImpl.java b/azure-webapp-maven-plugin/src/main/java/com/microsoft/azure/maven/webapp/handlers/NullRuntimeHandlerImpl.java index e0596e080d..cdf4a180c2 100644 --- a/azure-webapp-maven-plugin/src/main/java/com/microsoft/azure/maven/webapp/handlers/NullRuntimeHandlerImpl.java +++ b/azure-webapp-maven-plugin/src/main/java/com/microsoft/azure/maven/webapp/handlers/NullRuntimeHandlerImpl.java @@ -8,6 +8,7 @@ import com.microsoft.azure.management.appservice.WebApp; import com.microsoft.azure.maven.webapp.AbstractWebAppMojo; +import com.microsoft.azure.maven.webapp.WebAppUtils; import org.apache.maven.plugin.MojoExecutionException; public class NullRuntimeHandlerImpl implements RuntimeHandler { @@ -26,6 +27,8 @@ public WebApp.DefinitionStages.WithCreate defineAppWithRunTime() throws MojoExec @Override public WebApp.Update updateAppRuntime() throws MojoExecutionException { - return mojo.getWebApp().update(); + final WebApp app = mojo.getWebApp(); + WebAppUtils.clearTags(app); + return app.update(); } } diff --git a/azure-webapp-maven-plugin/src/main/java/com/microsoft/azure/maven/webapp/handlers/PrivateDockerHubRuntimeHandlerImpl.java b/azure-webapp-maven-plugin/src/main/java/com/microsoft/azure/maven/webapp/handlers/PrivateDockerHubRuntimeHandlerImpl.java index 8fc8fbe832..a9e6c8efff 100644 --- a/azure-webapp-maven-plugin/src/main/java/com/microsoft/azure/maven/webapp/handlers/PrivateDockerHubRuntimeHandlerImpl.java +++ b/azure-webapp-maven-plugin/src/main/java/com/microsoft/azure/maven/webapp/handlers/PrivateDockerHubRuntimeHandlerImpl.java @@ -40,6 +40,7 @@ public WebApp.DefinitionStages.WithCreate defineAppWithRunTime() throws MojoExec public WebApp.Update updateAppRuntime() throws MojoExecutionException { final WebApp app = mojo.getWebApp(); WebAppUtils.assureLinuxWebApp(app); + WebAppUtils.clearTags(app); final ContainerSetting containerSetting = mojo.getContainerSettings(); final Server server = Utils.getServer(mojo.getSettings(), containerSetting.getServerId()); diff --git a/azure-webapp-maven-plugin/src/main/java/com/microsoft/azure/maven/webapp/handlers/PrivateRegistryRuntimeHandlerImpl.java b/azure-webapp-maven-plugin/src/main/java/com/microsoft/azure/maven/webapp/handlers/PrivateRegistryRuntimeHandlerImpl.java index 12cd7c409d..5235fe7a28 100644 --- a/azure-webapp-maven-plugin/src/main/java/com/microsoft/azure/maven/webapp/handlers/PrivateRegistryRuntimeHandlerImpl.java +++ b/azure-webapp-maven-plugin/src/main/java/com/microsoft/azure/maven/webapp/handlers/PrivateRegistryRuntimeHandlerImpl.java @@ -40,6 +40,7 @@ public WebApp.DefinitionStages.WithCreate defineAppWithRunTime() throws MojoExec public WebApp.Update updateAppRuntime() throws MojoExecutionException { final WebApp app = mojo.getWebApp(); WebAppUtils.assureLinuxWebApp(app); + WebAppUtils.clearTags(app); final ContainerSetting containerSetting = mojo.getContainerSettings(); final Server server = Utils.getServer(mojo.getSettings(), containerSetting.getServerId()); diff --git a/azure-webapp-maven-plugin/src/main/java/com/microsoft/azure/maven/webapp/handlers/PublicDockerHubRuntimeHandlerImpl.java b/azure-webapp-maven-plugin/src/main/java/com/microsoft/azure/maven/webapp/handlers/PublicDockerHubRuntimeHandlerImpl.java index 03e9ac8728..bb328fcbb4 100644 --- a/azure-webapp-maven-plugin/src/main/java/com/microsoft/azure/maven/webapp/handlers/PublicDockerHubRuntimeHandlerImpl.java +++ b/azure-webapp-maven-plugin/src/main/java/com/microsoft/azure/maven/webapp/handlers/PublicDockerHubRuntimeHandlerImpl.java @@ -30,6 +30,7 @@ public WebApp.DefinitionStages.WithCreate defineAppWithRunTime() throws MojoExec public WebApp.Update updateAppRuntime() throws MojoExecutionException { final WebApp app = mojo.getWebApp(); WebAppUtils.assureLinuxWebApp(app); + WebAppUtils.clearTags(app); final ContainerSetting containerSetting = mojo.getContainerSettings(); return app.update().withPublicDockerHubImage(containerSetting.getImageName()); diff --git a/azure-webapp-maven-plugin/src/test/java/com/microsoft/azure/maven/webapp/handlers/NullRuntimeHandlerImplTest.java b/azure-webapp-maven-plugin/src/test/java/com/microsoft/azure/maven/webapp/handlers/NullRuntimeHandlerImplTest.java index a439deee2a..8d71eb7d8d 100644 --- a/azure-webapp-maven-plugin/src/test/java/com/microsoft/azure/maven/webapp/handlers/NullRuntimeHandlerImplTest.java +++ b/azure-webapp-maven-plugin/src/test/java/com/microsoft/azure/maven/webapp/handlers/NullRuntimeHandlerImplTest.java @@ -7,6 +7,7 @@ package com.microsoft.azure.maven.webapp.handlers; import com.microsoft.azure.management.appservice.WebApp; +import com.microsoft.azure.management.appservice.implementation.SiteInner; import com.microsoft.azure.maven.webapp.AbstractWebAppMojo; import org.apache.maven.plugin.MojoExecutionException; import org.junit.Before; @@ -47,9 +48,11 @@ public void defineAppWithRunTime() throws Exception { @Test public void updateAppRuntime() throws Exception { - final WebApp.Update update = mock(WebApp.Update.class); final WebApp app = mock(WebApp.class); + final WebApp.Update update = mock(WebApp.Update.class); when(app.update()).thenReturn(update); + final SiteInner siteInner = mock(SiteInner.class); + when(app.inner()).thenReturn(siteInner); when(mojo.getWebApp()).thenReturn(app); assertSame(update, handler.updateAppRuntime());