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..4f5fcff119 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 @@ -1,5 +1,5 @@ /* - * Copyright 2012-2020 the original author or authors. + * Copyright 2012-2021 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -130,6 +130,23 @@ public enum CloudPlatform { return false; } + }, + + /** + * 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); + } + }; private static final String PROPERTY_NAME = "spring.main.cloud-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..9cbb7c1b77 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 @@ -1,5 +1,5 @@ /* - * Copyright 2012-2020 the original author or authors. + * Copyright 2012-2021 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -50,7 +50,6 @@ class CloudPlatformTests { Environment environment = new MockEnvironment(); CloudPlatform platform = CloudPlatform.getActive(environment); assertThat(platform).isNull(); - } @Test @@ -131,6 +130,32 @@ class CloudPlatformTests { 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 getActiveWhenHasWebsiteSiteNameAndNoWebsitesEnableAppServiceStorageShouldNotReturnAzureAppService() { + Environment environment = getEnvironmentWithEnvVariables(Collections.singletonMap("WEBSITE_SITE_NAME", "---")); + CloudPlatform platform = CloudPlatform.getActive(environment); + assertThat(platform).isNull(); + } + + @Test + void getActiveWhenHasWebsitesEnableAppServiceStorageAndNoWebsiteNameShouldNotReturnAzureAppService() { + Environment environment = getEnvironmentWithEnvVariables( + Collections.singletonMap("WEBSITES_ENABLE_APP_SERVICE_STORAGE", "---")); + CloudPlatform platform = CloudPlatform.getActive(environment); + assertThat(platform).isNull(); + } + @Test void getActiveWhenHasEnforcedCloudPlatform() { Environment environment = getEnvironmentWithEnvVariables(