|
26 | 26 | import DistroManager |
27 | 27 | import logging |
28 | 28 | import time |
| 29 | +import platform |
| 30 | + |
29 | 31 | from VirtualDisk import VirtualDisk |
30 | 32 | from DistroManager import PXEInstaller |
31 | 33 | from virtinst import _virtinst as _ |
@@ -168,18 +170,31 @@ def __init__(self, type=None, arch=None, connection=None, hypervisorURI=None, em |
168 | 170 | Guest.Guest.__init__(self, type, connection, hypervisorURI, installer) |
169 | 171 | self.disknode = "hd" |
170 | 172 | self.features = { "acpi": None, "pae": util.is_pae_capable(), "apic": None } |
| 173 | + if arch is None: |
| 174 | + arch = platform.machine |
171 | 175 | self.arch = arch |
172 | | - if emulator is None: |
| 176 | + |
| 177 | + self.emulator = emulator |
| 178 | + self.loader = None |
| 179 | + guest = self._caps.guestForOSType(type=self.installer.os_type, |
| 180 | + arch=self.arch) |
| 181 | + if (not self.emulator) and guest: |
| 182 | + for dom in guest.domains: |
| 183 | + if dom.hypervisor_type == self.installer.type: |
| 184 | + self.emulator = dom.emulator |
| 185 | + self.loader = dom.loader |
| 186 | + |
| 187 | + # Fall back to default hardcoding |
| 188 | + if self.emulator is None: |
173 | 189 | if self.type == "xen": |
174 | 190 | if os.uname()[4] in ("x86_64"): |
175 | | - emulator = "/usr/lib64/xen/bin/qemu-dm" |
| 191 | + self.emulator = "/usr/lib64/xen/bin/qemu-dm" |
176 | 192 | else: |
177 | | - emulator = "/usr/lib/xen/bin/qemu-dm" |
178 | | - self.emulator = emulator |
179 | | - if self.type == "xen": |
| 193 | + self.emulator = "/usr/lib/xen/bin/qemu-dm" |
| 194 | + |
| 195 | + if (not self.loader) and self.type == "xen": |
180 | 196 | self.loader = "/usr/lib/xen/boot/hvmloader" |
181 | | - else: |
182 | | - self.loader = None |
| 197 | + |
183 | 198 | self._os_type = None |
184 | 199 | self._os_variant = None |
185 | 200 |
|
|
0 commit comments