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