[et-mgmt-tools] [PATCH] Support NetWare PV installs

John Levon john.levon at sun.com
Wed Mar 11 23:20:57 UTC 2009


# HG changeset patch
# User John Levon <john.levon at sun.com>
# Date 1236813503 25200
# Node ID bc57f31980f9a408db53e83e177a00931be0a479
# Parent  143cad71a2a6e83bfff7f46a0f7105e3eeb43ab2
Support NetWare PV installs

Signed-off-by: John Levon <john.levon at sun.com>

diff --git a/virtinst/DistroInstaller.py b/virtinst/DistroInstaller.py
--- a/virtinst/DistroInstaller.py
+++ b/virtinst/DistroInstaller.py
@@ -196,7 +196,8 @@ class DistroInstaller(Installer.Installe
             self.install["extraargs"] = args
 
             self._tmpfiles.append(kernelfn)
-            self._tmpfiles.append(initrdfn)
+            if initrdfn:
+                self._tmpfiles.append(initrdfn)
 
         # If they're installing off a local file/device, we map it
         # through to a virtual CD or disk
diff --git a/virtinst/OSDistro.py b/virtinst/OSDistro.py
--- a/virtinst/OSDistro.py
+++ b/virtinst/OSDistro.py
@@ -86,6 +86,8 @@ def _storeForDistro(fetcher, baseuri, ty
         stores.append(SolarisDistro)
     if distro == "solaris" or distro is None:
         stores.append(OpenSolarisDistro)
+    if distro == "netware" or distro is None:
+        stores.append(NetWareDistro)
 
     stores.append(GenericDistro)
 
@@ -1022,6 +1024,9 @@ class SolarisDistro(SunDistro):
                 self.initrdpath)
 
 class OpenSolarisDistro(SunDistro):
+
+    os_variant = "opensolaris"
+ 
     kernelpath = "platform/i86xpv/kernel/unix"
     initrdpath = "boot/x86.microroot"
 
@@ -1065,3 +1070,21 @@ class OpenSolarisDistro(SunDistro):
             os.unlink(kernel)
             raise RuntimeError(_("OpenSolaris microroot not found at %s") %
                 self.initrdpath)
+
+# NetWare 6 PV
+class NetWareDistro(Distro):
+    name = "NetWare"
+    os_type = "other"
+    os_variant = "netware6"
+
+    loaderpath = "STARTUP/XNLOADER.SYS"
+
+    def isValidStore(self, fetcher, progresscb):
+        if fetcher.hasFile(self.loaderpath):
+            logging.debug("Detected NetWare")
+            return True
+        return False
+
+    def acquireKernel(self, guest, fetcher, progresscb):
+        loader = fetcher.acquireFile(self.loaderpath, progresscb)
+        return (loader, "", "")
diff --git a/virtinst/osdict.py b/virtinst/osdict.py
--- a/virtinst/osdict.py
+++ b/virtinst/osdict.py
@@ -211,7 +211,7 @@ OS_TYPES = {\
         "msdos": { "label": "MS-DOS", "acpi": False, "apic": False },
         "netware4": { "label": "Novell Netware 4" },
         "netware5": { "label": "Novell Netware 5" },
-        "netware6": { "label": "Novell Netware 6" },
+        "netware6": { "label": "Novell Netware 6", "pv_cdrom_install": True, },
         "generic": { "label": "Generic" },
     },
 },}




More information about the et-mgmt-tools mailing list