|
|
|
@ -104,6 +104,9 @@ class VariableOsDeviceDev(ReadonlyVariable,DeviceHelper):
|
|
|
|
|
master = None
|
|
|
|
|
|
|
|
|
|
def init(self):
|
|
|
|
|
pass
|
|
|
|
|
def get(self):
|
|
|
|
|
"""Get device /dev name"""
|
|
|
|
|
if self.master is None:
|
|
|
|
|
self.master,slave = pty.openpty()
|
|
|
|
|
self.monitor = Popen(["/sbin/udevadm","monitor","--kernel",
|
|
|
|
@ -113,8 +116,6 @@ class VariableOsDeviceDev(ReadonlyVariable,DeviceHelper):
|
|
|
|
|
fl = fcntl.fcntl(self.master,fcntl.F_GETFL)
|
|
|
|
|
fcntl.fcntl(self.master, fcntl.F_SETFL, fl | os.O_NONBLOCK)
|
|
|
|
|
|
|
|
|
|
def get(self):
|
|
|
|
|
"""Get device /dev name"""
|
|
|
|
|
def _getDiskName(devpath):
|
|
|
|
|
"""Get devname only for by udevadm that devpath is device (disk)"""
|
|
|
|
|
prop = getUdevDeviceInfo(devpath)
|
|
|
|
@ -132,21 +133,23 @@ class VariableOsDeviceDev(ReadonlyVariable,DeviceHelper):
|
|
|
|
|
|
|
|
|
|
def close(self):
|
|
|
|
|
try:
|
|
|
|
|
self.monitor.kill()
|
|
|
|
|
self.monitor.wait()
|
|
|
|
|
if self.monitor:
|
|
|
|
|
self.monitor.kill()
|
|
|
|
|
self.monitor.wait()
|
|
|
|
|
except:
|
|
|
|
|
pass
|
|
|
|
|
|
|
|
|
|
def refresh(self):
|
|
|
|
|
try:
|
|
|
|
|
res = os.read(self.master,65535)
|
|
|
|
|
if res:
|
|
|
|
|
while len(res) == 65535:
|
|
|
|
|
res = os.read(self.master,65535)
|
|
|
|
|
self.parent.Invalidate(self.name)
|
|
|
|
|
self.parent.Invalidate('os_install_disk_uuid')
|
|
|
|
|
self.parent.Invalidate('os_disk_dev')
|
|
|
|
|
getUdevDeviceInfo.clearCache()
|
|
|
|
|
if self.monitor:
|
|
|
|
|
res = os.read(self.master,65535)
|
|
|
|
|
if res:
|
|
|
|
|
while len(res) == 65535:
|
|
|
|
|
res = os.read(self.master,65535)
|
|
|
|
|
self.parent.Invalidate(self.name)
|
|
|
|
|
self.parent.Invalidate('os_install_disk_uuid')
|
|
|
|
|
self.parent.Invalidate('os_disk_dev')
|
|
|
|
|
getUdevDeviceInfo.clearCache()
|
|
|
|
|
except OSError as e:
|
|
|
|
|
pass
|
|
|
|
|
|
|
|
|
|