def resolveDeviceName(self): """ resolves the given devicenames and returns a list of commands to execute to get device operational. """ journal_cmds=list() if len(self.getDeviceName().split("="))==2: (key, value)=self.getDeviceName().split("=")[:2] self.resolveDeviceNameByKeyValue(key, value) if LogicalVolume.isValidLVPath(self.getDeviceName()): lv=LogicalVolume(self.getDeviceName()) lv.init_from_disk() self.initLVM() self.lvm_activated=False if self.getAttribute("options", "") != "skipactivate" and not self.is_lvm_activated(): self.lvm_vg_activate() self.lvm_activated=True journal_cmds.append("lvm_vg_activate") elif self.getAttribute("options", "") != "skipdeactivate": devicenames=list() devicename=HostDisk.map2realDMName(self.getDeviceName()) devicenames.append(devicename) self.initFromDisk() if self.isDMMultipath(): partdelim=DEVICEMAPPER_PART_DELIM else: partdelim="" for partition in self.getAllPartitions(): devicenames.append("%s%s%s" %(devicename, partdelim, partition.getAttribute("name"))) for devicename in devicenames: if PhysicalVolume.isPV(devicename): journal_cmds.append("pv_deactivate") return journal_cmds
def pv_deactivate(self, devicename=None): """ Deactivates all vgs held by this disk (including partitions) @param devicename: if given only this device will be taken into account """ if not devicename: for devicename in self.getDeviceNames(): self.pv_deactivate(devicename) if not PhysicalVolume.isPV(devicename): return pvs=LinuxVolumeManager.pvlist(pvname=devicename) for pv in pvs: if pv.parentvg: for lv in LinuxVolumeManager.lvlist(pv.parentvg): if lv.isActivated(): pv.parentvg.deactivate() break