self.execdom0("md5sum /boot/%s" % imgFile))
xenrt.TEC().logverbose("initrd has been rebuilt")
+ @property
+ def mpathRoot(self):
+ return self.lookup("OPTION_ROOT_MPATH", False, boolean=True) and not self.lookup("FORCE_NO_ROOT_MPATH", False, boolean=True) and not self.lookup("NO_SAN_ROOT", False, boolean=True)
+
@property
def xapiObject(self):
"""Gets a XAPI Host object for this Host
pxe.setSerial(serport, serbaud)
if self.lookup("PXE_NO_PROMPT", False, boolean=True):
pxe.setPrompt("0")
- chain = self.lookup("PXE_CHAIN_LOCAL_BOOT", None)
+ chain = self.getChainBoot()
if chain:
pxe.addEntry("local", boot="chainlocal", options=chain)
else:
# # Enable SSH into the installer to aid debug if installations fail
# pxecfg.mbootArgsModule1Add("sshpassword=%s" % self.password)
- optionRootMpath = self.lookup("OPTION_ROOT_MPATH", False, boolean=True)
-
- if optionRootMpath:
+ if self.mpathRoot:
pxecfg.mbootArgsModule1Add("device_mapper_multipath=enabled")
# Set up PXE for installer boot
if xenrt.TEC().lookup("HOST_POST_INSTALL_REBOOT", False, boolean=True):
self.reboot()
- optionRootMpath = self.lookup("OPTION_ROOT_MPATH", False, boolean=True)
- if optionRootMpath:
+ if self.mpathRoot:
# Check to ensure that there is a multipath topology if we did multipath boot.
if not len(self.getMultipathInfo()) > 0 :
raise xenrt.XRTFailure("There is no multipath topology found with multipath boot")
pxe.setSerial(serport, serbaud)
if self.lookup("PXE_NO_PROMPT", False, boolean=True):
pxe.setPrompt("0")
- chain = self.lookup("PXE_CHAIN_LOCAL_BOOT", None)
+ chain = self.getChainBoot()
if chain:
pxe.addEntry("local", boot="chainlocal", options=chain)
else:
xenrt.TEC().warning("Using installer user extra Dom0 boot args %s"
% (dom0_extra_args_user))
- optionRootMpath = self.lookup("OPTION_ROOT_MPATH", False, boolean=True)
-
- if optionRootMpath:
- pxecfg.mbootArgsModule1Add("device_mapper_multipath=%s" % optionRootMpath)
+ if self.mpathRoot:
+ pxecfg.mbootArgsModule1Add("device_mapper_multipath=enabled")
# Set up PXE for installer boot
pxefile = pxe.writeOut(self.machine)
serport = self.lookup("SERIAL_CONSOLE_PORT", "0")
serbaud = self.lookup("SERIAL_CONSOLE_BAUD", "115200")
pxe.setSerial(serport, serbaud)
- chain = self.lookup("PXE_CHAIN_LOCAL_BOOT", None)
+ chain = self.getChainBoot()
if chain:
pxe.addEntry("local", boot="chainlocal", options=chain)
else:
serport = self.lookup("SERIAL_CONSOLE_PORT", "0")
serbaud = self.lookup("SERIAL_CONSOLE_BAUD", "115200")
pxe.setSerial(serport, serbaud)
- chain = self.lookup("PXE_CHAIN_LOCAL_BOOT", None)
+ chain = self.getChainBoot()
if chain:
pxe.addEntry("local", boot="chainlocal", options=chain)
else:
# Construct a PXE target
pxe = xenrt.PXEBoot()
pxe.setSerial(serport, serbaud)
- chain = self.lookup("PXE_CHAIN_LOCAL_BOOT", None)
+ chain = self.getChainBoot()
if chain:
pxe.addEntry("local", boot="chainlocal", options=chain)
else:
return subnetMask,gateway
- def _getDisks(self, var, sdfallback, count, ccissIfAvailable, legacySATA):
+ def getChainBoot(self, noSan=False):
+ noSan = noSan or self.lookup("NO_SAN_ROOT", False, boolean=True)
+ ret = None
+ if noSan:
+ ret = self.lookup("PXE_CHAIN_LOCAL_BOOT_NOSAN", None)
+ if not ret:
+ ret = self.lookup("PXE_CHAIN_LOCAL_BOOT", None)
+ return ret
+
+ def _getDisks(self, var, sdfallback, count, ccissIfAvailable, legacySATA, noSan):
+ noSan = noSan or self.lookup("NO_SAN_ROOT", False, boolean=True)
disks = None
- try:
- if ccissIfAvailable:
- disks = self.lookup([var, "CCISS"])
- else:
- disks = self.lookup([var, "SCSI"])
- except:
- pass
- try:
- if legacySATA:
- disks = self.lookup([var, "LEGACY_SATA"])
- else:
- disks = self.lookup([var, "SATA"])
- except:
- pass
- if not disks:
- disks = self.lookup(var, None)
- # REQ-35: (Better) temp fix until we fix all of the config files
- if not legacySATA and disks and "scsi-SATA" in "".join(disks):
- disks = None
+ if noSan:
+ varlist = ["%s_NOSAN", var]
+ else:
+ varlist = [var]
+ for v in varlist:
+ try:
+ if ccissIfAvailable:
+ disks = self.lookup([var, "CCISS"])
+ else:
+ disks = self.lookup([var, "SCSI"])
+ except:
+ pass
+ try:
+ if legacySATA:
+ disks = self.lookup([var, "LEGACY_SATA"])
+ else:
+ disks = self.lookup([var, "SATA"])
+ except:
+ pass
+ if not disks:
+ disks = self.lookup(var, None)
+ # REQ-35: (Better) temp fix until we fix all of the config files
+ if not legacySATA and disks and "scsi-SATA" in "".join(disks):
+ disks = None
+ if disks:
+ break
if not disks and sdfallback:
disks = string.join(map(lambda x:"sd"+chr(97+x), range(count)))
if not disks:
else:
return string.split(disks)[:count]
- def _getMainDisks(self, count, ccissIfAvailable, legacySATA):
- return self._getDisks("OPTION_CARBON_DISKS", True, count=count, ccissIfAvailable=ccissIfAvailable, legacySATA=legacySATA)
+ def _getMainDisks(self, count, ccissIfAvailable, legacySATA, noSan):
+ return self._getDisks("OPTION_CARBON_DISKS", True, count=count, ccissIfAvailable=ccissIfAvailable, legacySATA=legacySATA, noSan=noSan)
- def getInstallDisk(self, ccissIfAvailable=False, legacySATA=False):
- return self._getMainDisks(ccissIfAvailable=ccissIfAvailable, count=1, legacySATA=legacySATA)[0]
+ def getInstallDisk(self, ccissIfAvailable=False, legacySATA=False, noSan=False):
+ return self._getMainDisks(ccissIfAvailable=ccissIfAvailable, count=1, legacySATA=legacySATA, noSan=noSan)[0]
- def getGuestDisks(self, count=1, ccissIfAvailable=False, legacySATA=False):
- disks = self._getDisks("OPTION_GUEST_DISKS", False, count=count, ccissIfAvailable=ccissIfAvailable, legacySATA=legacySATA)
+ def getGuestDisks(self, count=1, ccissIfAvailable=False, legacySATA=False, noSan=False):
+ disks = self._getDisks("OPTION_GUEST_DISKS", False, count=count, ccissIfAvailable=ccissIfAvailable, legacySATA=legacySATA, noSan=noSan)
if disks:
return disks
else: