Roy Golan has uploaded a new change for review.

Change subject: core: WIP libosinfo - add OsHelper class
......................................................................

core: WIP libosinfo - add OsHelper class

Change-Id: Ie694986247c71284bccbf1ac9645a8c30540469a
Signed-off-by: Roy Golan <rgo...@redhat.com>
---
M 
backend/manager/modules/services/libosinfo/interface/src/main/java/org/ovirt/engine/core/services/libosinfo/LibosinfoService.java
M 
backend/manager/modules/services/libosinfo/interface/src/main/java/org/ovirt/engine/core/services/libosinfo/LibosinfoServiceXmlImpl.java
A 
backend/manager/modules/services/libosinfo/interface/src/main/java/org/ovirt/engine/core/services/libosinfo/OsHelper.java
M 
backend/manager/modules/services/libosinfo/interface/src/test/java/org/ovirt/engine/core/services/libosinfo/LibosinfoServiceTest.java
4 files changed, 90 insertions(+), 39 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/48/9048/1

diff --git 
a/backend/manager/modules/services/libosinfo/interface/src/main/java/org/ovirt/engine/core/services/libosinfo/LibosinfoService.java
 
b/backend/manager/modules/services/libosinfo/interface/src/main/java/org/ovirt/engine/core/services/libosinfo/LibosinfoService.java
index 10b538a..5978efc 100644
--- 
a/backend/manager/modules/services/libosinfo/interface/src/main/java/org/ovirt/engine/core/services/libosinfo/LibosinfoService.java
+++ 
b/backend/manager/modules/services/libosinfo/interface/src/main/java/org/ovirt/engine/core/services/libosinfo/LibosinfoService.java
@@ -1,23 +1,26 @@
 package org.ovirt.engine.core.services.libosinfo;
 
 import java.util.Map;
+import java.util.Set;
 
-import org.ovirt.engine.core.common.businessentities.VmOsType;
-import org.ovirt.engine.core.services.libosinfo.Libosinfo.Os;
+import org.ovirt.engine.core.common.businessentities.CpuArch;
+import org.ovirt.engine.core.libosinfo.Os;
 
 public interface LibosinfoService {
 
-    int getMinimumCpuSpeed(VmOsType os);
+    int getMinimumCpuSpeed(String osId, CpuArch cpuArch);
 
-    int getMinimumCpuNumber(VmOsType os);
+    int getMinimumCpuNumber(String osId, CpuArch cpuArch);
 
-    long getMinimumRam(VmOsType os);
+    long getMinimumRam(String osId, CpuArch cpuArch);
 
-    int getRecommendedCpu(VmOsType os);
+    int getRecommendedCpu(String osId, CpuArch cpuArch);
 
-    long getRecommendedRam(VmOsType os);
+    long getRecommendedRam(String osId, CpuArch cpuArch);
 
     Os getByShortId(String shortId);
 
     Map<String, Os> getAll();
+
+    Set<String> getShortIds();
 }
diff --git 
a/backend/manager/modules/services/libosinfo/interface/src/main/java/org/ovirt/engine/core/services/libosinfo/LibosinfoServiceXmlImpl.java
 
b/backend/manager/modules/services/libosinfo/interface/src/main/java/org/ovirt/engine/core/services/libosinfo/LibosinfoServiceXmlImpl.java
index f86c216..d3bfd4e 100644
--- 
a/backend/manager/modules/services/libosinfo/interface/src/main/java/org/ovirt/engine/core/services/libosinfo/LibosinfoServiceXmlImpl.java
+++ 
b/backend/manager/modules/services/libosinfo/interface/src/main/java/org/ovirt/engine/core/services/libosinfo/LibosinfoServiceXmlImpl.java
@@ -4,35 +4,46 @@
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.Map;
+import java.util.Set;
 
 import javax.xml.bind.JAXBContext;
 import javax.xml.bind.JAXBException;
 import javax.xml.bind.Unmarshaller;
-import org.ovirt.engine.core.common.businessentities.VmOsType;
+
+import org.ovirt.engine.core.common.businessentities.CpuArch;
 import org.ovirt.engine.core.common.config.Config;
 import org.ovirt.engine.core.common.config.ConfigValues;
-import org.ovirt.engine.core.services.libosinfo.Libosinfo.Os;
-import org.ovirt.engine.core.services.libosinfo.Libosinfo.Os.Resources;
-import org.ovirt.engine.core.services.libosinfo.Libosinfo.Os.Resources.Minimum;
-import 
org.ovirt.engine.core.services.libosinfo.Libosinfo.Os.Resources.Recommended;
+import org.ovirt.engine.core.libosinfo.Libosinfo;
+import org.ovirt.engine.core.libosinfo.ObjectFactory;
+import org.ovirt.engine.core.libosinfo.Os;
+import org.ovirt.engine.core.libosinfo.Os.Resources;
+import org.ovirt.engine.core.libosinfo.Os.Resources.Minimum;
+import org.ovirt.engine.core.libosinfo.Os.Resources.Recommended;
+
 
 public enum LibosinfoServiceXmlImpl implements LibosinfoService {
 
     INSTANCE;
 
-    private final String i386 = "i386";
-    private final String x86_64 = "x86_64";
-
     private Map<String, Os> all;
-
     private Map<String, Os> osInfoMap = new HashMap<String, Os>();
 
     private final ObjectFactory factory = new ObjectFactory();
-    private final Resources emptyResouce = 
factory.createLibosinfoOsResources();
+    private final Os emptyOs = factory.createOs();
+    private final Os.Resources emptyResouce = factory.createOsResources();
+
+    private LibosinfoServiceXmlImpl() {
+        init();
+    }
 
     public void init() {
-        Minimum min = factory.createLibosinfoOsResourcesMinimum();
-        Recommended rec = factory.createLibosinfoOsResourcesRecommended();
+        emptyOs.setFamily("");
+        emptyOs.setId("");
+        emptyOs.setShortId("");
+        emptyOs.setName("");
+
+        Minimum min = factory.createOsResourcesMinimum();
+        Recommended rec = factory.createOsResourcesRecommended();
         min.setCpu(-1);
         min.setRam(-1);
         rec.setCpu(-1);
@@ -40,6 +51,7 @@
         emptyResouce.setArch("");
         emptyResouce.setMinimum(min);
         emptyResouce.setRecommended(rec);
+        emptyOs.getResources().add(emptyResouce);
 
         try {
             JAXBContext jaxbCtx = JAXBContext.newInstance(Libosinfo.class);
@@ -63,36 +75,35 @@
 
 
     @Override
-    public int getMinimumCpuSpeed(VmOsType os) {
-        return getResource(os.getShortId(), 
os.getIs64Bit()).getMinimum().getCpu();
+    public int getMinimumCpuSpeed(String osId, CpuArch arch) {
+        return getResourceByArch(osId, arch).getMinimum().getCpu();
     }
 
     @Override
-    public int getMinimumCpuNumber(VmOsType os) {
-        return getResource(os.getShortId(), 
os.getIs64Bit()).getMinimum().getNCpus();
+    public int getMinimumCpuNumber(String osId, CpuArch arch) {
+        return getResourceByArch(osId, arch).getMinimum().getNCpus();
     }
 
     @Override
-    public long getMinimumRam(VmOsType os) {
-        return getResource(os.getShortId(), 
os.getIs64Bit()).getMinimum().getRam();
+    public long getMinimumRam(String osId, CpuArch arch) {
+        return getResourceByArch(osId, arch).getMinimum().getRam();
     }
 
     @Override
-    public int getRecommendedCpu(VmOsType os) {
-        return getResource(os.getShortId(), 
os.getIs64Bit()).getRecommended().getCpu();
+    public int getRecommendedCpu(String osId, CpuArch arch) {
+        return getResourceByArch(osId, arch).getRecommended().getCpu();
     }
 
     @Override
-    public long getRecommendedRam(VmOsType os) {
-        return getResource(os.getShortId(), 
os.getIs64Bit()).getRecommended().getRam();
+    public long getRecommendedRam(String osId, CpuArch arch) {
+        return getResourceByArch(osId, arch).getRecommended().getRam();
     }
 
-    private Resources getResource(String shortId, boolean is64Bit) {
-        String arch = is64Bit ? x86_64 : i386;
+    private Resources getResourceByArch(String shortId, CpuArch arch) {
         Os os = getByShortId(shortId);
         if (os != null) {
             for (Resources resource : os.getResources()) {
-                if (resource.getArch().equals(arch)) {
+                if (resource.getArch().equals(arch.name())) {
                     return resource;
                 }
             }
@@ -113,4 +124,9 @@
         return osInfoMap.get(shortId);
     }
 
+    @Override
+    public Set<String> getShortIds() {
+        return osInfoMap.keySet();
+    }
+
 }
diff --git 
a/backend/manager/modules/services/libosinfo/interface/src/main/java/org/ovirt/engine/core/services/libosinfo/OsHelper.java
 
b/backend/manager/modules/services/libosinfo/interface/src/main/java/org/ovirt/engine/core/services/libosinfo/OsHelper.java
new file mode 100644
index 0000000..e751700
--- /dev/null
+++ 
b/backend/manager/modules/services/libosinfo/interface/src/main/java/org/ovirt/engine/core/services/libosinfo/OsHelper.java
@@ -0,0 +1,31 @@
+package org.ovirt.engine.core.services.libosinfo;
+
+import org.ovirt.engine.core.common.businessentities.CpuArch;
+import org.ovirt.engine.core.libosinfo.Os;
+
+public class OsHelper {
+
+
+    public static boolean is64Bit(Os os) {
+        return is64Bit(os.getResources().get(0).getArch());
+    }
+
+    public static boolean is64Bit(String arch) {
+        return CpuArch.X86_64.name().equalsIgnoreCase(arch);
+    }
+
+    public static boolean isWindows(String osId) {
+        return 
"windows".equalsIgnoreCase(LibosinfoServiceXmlImpl.INSTANCE.getByShortId(osId).getFamily());
+    }
+
+    /**
+     *
+     * @param osId
+     * @return true id the OS family is linux. <br>
+     * FIXME should it contain also Unix, Solaris and we should change the 
name to isXnix?
+     */
+    public static boolean isLinux(String osId) {
+        return 
"linux".equalsIgnoreCase(LibosinfoServiceXmlImpl.INSTANCE.getByShortId(osId).getFamily());
+    }
+
+}
diff --git 
a/backend/manager/modules/services/libosinfo/interface/src/test/java/org/ovirt/engine/core/services/libosinfo/LibosinfoServiceTest.java
 
b/backend/manager/modules/services/libosinfo/interface/src/test/java/org/ovirt/engine/core/services/libosinfo/LibosinfoServiceTest.java
index 0314bd2..5f26b86 100644
--- 
a/backend/manager/modules/services/libosinfo/interface/src/test/java/org/ovirt/engine/core/services/libosinfo/LibosinfoServiceTest.java
+++ 
b/backend/manager/modules/services/libosinfo/interface/src/test/java/org/ovirt/engine/core/services/libosinfo/LibosinfoServiceTest.java
@@ -4,6 +4,7 @@
 import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
+import org.ovirt.engine.core.common.businessentities.CpuArch;
 import org.ovirt.engine.core.common.businessentities.VmOsType;
 import org.ovirt.engine.core.common.config.ConfigValues;
 import org.ovirt.engine.core.utils.MockConfigRule;
@@ -19,35 +20,35 @@
 
     @Before
     public void init() {
+        // Initializing the instance to let the Juit runner set the 
MockConfigRule on it.
         if (service == null) {
-        LibosinfoServiceXmlImpl.INSTANCE.init();
-        service = LibosinfoServiceXmlImpl.INSTANCE;
+            service = LibosinfoServiceXmlImpl.INSTANCE;
         }
     }
 
     @Test
     public void testRemmendedCpu() {
-        Assert.assertTrue(service.getRecommendedCpu((VmOsType.Windows2003)) > 
100);
+        
Assert.assertTrue(service.getRecommendedCpu(VmOsType.Windows2003.name(), 
CpuArch.i386) > 100);
     }
 
     @Test
     public void testRemmendedRam() {
-        Assert.assertTrue(service.getRecommendedRam((VmOsType.Windows2008)) > 
100);
+        
Assert.assertTrue(service.getRecommendedRam(VmOsType.Windows2008.name(), 
CpuArch.i386) > 100);
     }
 
     @Test
     public void testMinimumCpu() {
-        Assert.assertTrue(service.getMinimumCpuSpeed((VmOsType.Windows7)) > 
100);
+        Assert.assertTrue(service.getMinimumCpuSpeed(VmOsType.Windows7.name(), 
CpuArch.i386) > 100);
     }
 
     @Test
     public void testMinimumRam() {
-        Assert.assertTrue(service.getMinimumRam((VmOsType.WindowsXP)) > 100);
+        Assert.assertTrue(service.getMinimumRam(VmOsType.WindowsXP.name(), 
CpuArch.i386) > 100);
     }
 
     @Test
     public void testMinimumCpuNumber() {
-        Assert.assertTrue(service.getMinimumCpuNumber((VmOsType.Windows7)) > 
0);
+        
Assert.assertTrue(service.getMinimumCpuNumber(VmOsType.Windows7.name(), 
CpuArch.i386) > 0);
     }
 
     @Test


--
To view, visit http://gerrit.ovirt.org/9048
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ie694986247c71284bccbf1ac9645a8c30540469a
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Roy Golan <rgo...@redhat.com>
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to