This is an automated email from the ASF dual-hosted git repository.

heneveld pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/brooklyn-server.git

commit 524106bef020dcf25f82c304ba02a9c6f20f6abe
Author: Aled Sage <aled.s...@gmail.com>
AuthorDate: Thu Jan 24 12:28:29 2019 +0000

    BROOKLYN-607: prefer vanilla CentOS image on azure
---
 .../location/jclouds/BrooklynImageChooser.java     | 19 +++++++++
 .../location/jclouds/BrooklynImageChooserTest.java | 45 ++++++++++++++++++++++
 2 files changed, 64 insertions(+)

diff --git 
a/locations/jclouds/src/main/java/org/apache/brooklyn/location/jclouds/BrooklynImageChooser.java
 
b/locations/jclouds/src/main/java/org/apache/brooklyn/location/jclouds/BrooklynImageChooser.java
index 701528a..53102b8 100644
--- 
a/locations/jclouds/src/main/java/org/apache/brooklyn/location/jclouds/BrooklynImageChooser.java
+++ 
b/locations/jclouds/src/main/java/org/apache/brooklyn/location/jclouds/BrooklynImageChooser.java
@@ -167,8 +167,27 @@ public class BrooklynImageChooser implements Cloneable {
                         score += 0.5;
                 }
             }
+            
             // prefer 64-bit
             if (os.is64Bit()) score += 0.5;
+
+            // prefer 'normal' releases of the OS, especially on Azure for 
'OpenLogic' images.
+            // See https://issues.apache.org/jira/browse/BROOKLYN-607
+            // e.g. {id=northeurope/OpenLogic/CentOS-HPC/7.4, 
providerId=OpenLogic, name=CentOS-HPC, location={scope=REGION, id=northeurope, 
description=North Europe, parent=azurecompute-arm, iso3166Codes=[IE]}, 
os={family=centos, version=7.4, description=7.4, is64Bit=true}, 
description=7.4, version=7.4, status=AVAILABLE, loginUser=jclouds}
+            //      {id=northeurope/OpenLogic/CentOS-SRIOV/7.3-SRIOV, 
providerId=OpenLogic, name=CentOS-SRIOV, location={scope=REGION, 
id=northeurope, description=North Europe, parent=azurecompute-arm, 
iso3166Codes=[IE]}, os={family=centos, version=7.3-SRIOV, 
description=7.3-SRIOV, is64Bit=true}, description=7.3-SRIOV, version=7.3-SRIOV, 
status=AVAILABLE, loginUser=jclouds}
+            //      {id=northeurope/OpenLogic/CentOS/7.6, 
providerId=OpenLogic, name=CentOS, location={scope=REGION, id=northeurope, 
description=North Europe, parent=azurecompute-arm, iso3166Codes=[IE]}, 
os={family=centos, version=7.6, description=7.6, is64Bit=true}, 
description=7.6, version=7.6, status=AVAILABLE, loginUser=jclouds}
+            if (img.getName() != null) {
+                String name = img.getName();
+                if (name.contains("-SRIOV")) {
+                    score -= 0.05;
+                } else if (name.contains("-CI")) {
+                    score -= 0.05;
+                } else if (name.contains("-HPC")) {
+                    score -= 0.05;
+                } else if (name.contains("-LVM")) {
+                    score -= 0.05;
+                }
+            }
         }
 
         // TODO prefer known providerIds
diff --git 
a/locations/jclouds/src/test/java/org/apache/brooklyn/location/jclouds/BrooklynImageChooserTest.java
 
b/locations/jclouds/src/test/java/org/apache/brooklyn/location/jclouds/BrooklynImageChooserTest.java
index f207c35..fbb488a 100644
--- 
a/locations/jclouds/src/test/java/org/apache/brooklyn/location/jclouds/BrooklynImageChooserTest.java
+++ 
b/locations/jclouds/src/test/java/org/apache/brooklyn/location/jclouds/BrooklynImageChooserTest.java
@@ -24,6 +24,8 @@ import java.util.Set;
 
 import org.jclouds.compute.domain.ComputeType;
 import org.jclouds.compute.domain.Image;
+import org.jclouds.compute.domain.Image.Status;
+import org.jclouds.compute.domain.ImageBuilder;
 import org.jclouds.compute.domain.OperatingSystem;
 import org.jclouds.compute.domain.OsFamily;
 import org.jclouds.domain.Location;
@@ -33,6 +35,7 @@ import org.testng.Assert;
 import org.testng.annotations.BeforeMethod;
 import org.testng.annotations.Test;
 
+import com.google.common.base.Function;
 import com.google.common.base.Joiner;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableMap;
@@ -48,6 +51,48 @@ public class BrooklynImageChooserTest {
     }
 
     @Test
+    public void testPrefersAzureVanillaCentos() {
+        // See https://issues.apache.org/jira/browse/BROOKLYN-607
+        
+        // {id=northeurope/OpenLogic/CentOS/7.6, providerId=OpenLogic, 
name=CentOS, location={scope=REGION, id=northeurope, description=North Europe, 
parent=azurecompute-arm, iso3166Codes=[IE]},         os={family=centos, 
version=7.6, description=7.6, is64Bit=true}, description=7.6, version=7.6, 
status=AVAILABLE, loginUser=jclouds}
+        Image img1 = new ImageBuilder()
+                .id("northeurope/OpenLogic/CentOS/7.6")
+                .providerId("OpenLogic")
+                .name("CentOS")
+                .description("7.6")
+                .version("7.6")
+                .status(Status.AVAILABLE)
+                .operatingSystem(OperatingSystem.builder()
+                        .family(OsFamily.CENTOS)
+                        .version("7.6")
+                        .description("7.6")
+                        .is64Bit(true)
+                        .build())
+                .build();
+        
+        // {id=northeurope/OpenLogic/CentOS-SRIOV/7.3-SRIOV, 
providerId=OpenLogic, name=CentOS-SRIOV, location={scope=REGION, 
id=northeurope, description=North Europe, parent=azurecompute-arm,           
iso3166Codes=[IE]}, os={family=centos, version=7.3-SRIOV, 
description=7.3-SRIOV, is64Bit=true}, description=7.3-SRIOV, version=7.3-SRIOV, 
status=AVAILABLE, loginUser=jclouds}
+        Image img2 = new ImageBuilder()
+            .id("northeurope/OpenLogic/CentOS-SRIOV/7.3-SRIOV")
+            .providerId("OpenLogic")
+            .name("CentOS-SRIOV")
+            .description("7.3-SRIOV")
+            .version("7.3-SRIOV")
+            .status(Status.AVAILABLE)
+            .operatingSystem(OperatingSystem.builder()
+                    .family(OsFamily.CENTOS)
+                    .version("7.3-SRIOV")
+                    .description("7.3-SRIOV")
+                    .is64Bit(true)
+                    .build())
+            .build();
+
+        Function<Iterable<? extends Image>, Image> func = 
brooklynImageChooser.chooser();
+        Image choice = func.apply(ImmutableList.of(img1, img2));
+        
+        Assert.assertEquals(choice, img1);
+    }
+
+    @Test
     public void testCentosOverUbuntu() {
         assertOrderOfPreference(
                 getScore(OsFamily.CENTOS, "7.0"),

Reply via email to