diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/cloud/CloudPlatform.java b/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/cloud/CloudPlatform.java index c4f61b2a87..bae1ed64ab 100644 --- a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/cloud/CloudPlatform.java +++ b/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/cloud/CloudPlatform.java @@ -45,6 +45,23 @@ public enum CloudPlatform { }, + /** + * Azure App Service platform. + */ + AZURE_APP_SERVICE { + + private static final String WEBSITE_SITE_NAME = "WEBSITE_SITE_NAME"; + + private static final String WEBSITES_ENABLE_APP_SERVICE_STORAGE = "WEBSITES_ENABLE_APP_SERVICE_STORAGE"; + + @Override + public boolean isDetected(Environment environment) { + return environment.containsProperty(WEBSITE_SITE_NAME) + && environment.containsProperty(WEBSITES_ENABLE_APP_SERVICE_STORAGE); + } + + }, + /** * Cloud Foundry platform. */ diff --git a/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/cloud/CloudPlatformTests.java b/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/cloud/CloudPlatformTests.java index 36bc7903f3..1d50f3082c 100644 --- a/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/cloud/CloudPlatformTests.java +++ b/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/cloud/CloudPlatformTests.java @@ -50,7 +50,33 @@ class CloudPlatformTests { Environment environment = new MockEnvironment(); CloudPlatform platform = CloudPlatform.getActive(environment); assertThat(platform).isNull(); + } + + @Test + void getActiveWhenHasWebsiteSiteNameAndWebsitesEnableAppServiceStorageShouldReturnAzureAppService() { + Map envVars = new HashMap<>(); + envVars.put("WEBSITE_SITE_NAME", "---"); + envVars.put("WEBSITES_ENABLE_APP_SERVICE_STORAGE", "false"); + Environment environment = getEnvironmentWithEnvVariables(envVars); + CloudPlatform platform = CloudPlatform.getActive(environment); + assertThat(platform).isEqualTo(CloudPlatform.AZURE_APP_SERVICE); + assertThat(platform.isActive(environment)).isTrue(); + } + + @Test + void getActiveWhenHasWebsiteSiteNameShouldReturnNull() { + Environment environment = getEnvironmentWithEnvVariables( + Collections.singletonMap("WEBSITE_SITE_NAME", "---")); + CloudPlatform platform = CloudPlatform.getActive(environment); + assertThat(platform).isNull(); + } + @Test + void getActiveWhenHasWebsitesEnableAppServiceStorageShouldReturnNull() { + Environment environment = getEnvironmentWithEnvVariables( + Collections.singletonMap("WEBSITES_ENABLE_APP_SERVICE_STORAGE", "---")); + CloudPlatform platform = CloudPlatform.getActive(environment); + assertThat(platform).isNull(); } @Test