diff options
author | Joel Andres Granados <jgranado@redhat.com> | 2008-08-06 16:06:30 +0200 |
---|---|---|
committer | Joel Andres Granados <jgranado@redhat.com> | 2008-08-07 15:20:47 +0200 |
commit | 7e334e5e4626d8696e8127e494c9eee2fcbb8474 (patch) | |
tree | abf15a2c6edce89bfd0552307d91a5520363413e /plugins/grub/minihal.py | |
parent | 7f2d0899817cd7894b44ab014d1a0744691ac7d0 (diff) | |
download | firstaidkit-7e334e5e4626d8696e8127e494c9eee2fcbb8474.tar.gz firstaidkit-7e334e5e4626d8696e8127e494c9eee2fcbb8474.tar.xz firstaidkit-7e334e5e4626d8696e8127e494c9eee2fcbb8474.zip |
Initial commit for the Grub plugin.
Nothing was used from the original grub plugin. For now
they will both coexists in the code.
Diffstat (limited to 'plugins/grub/minihal.py')
-rw-r--r-- | plugins/grub/minihal.py | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/plugins/grub/minihal.py b/plugins/grub/minihal.py new file mode 100644 index 0000000..2b5504e --- /dev/null +++ b/plugins/grub/minihal.py @@ -0,0 +1,74 @@ +# minihal.py: Simple wrapper around HAL +# +# Copyright (C) 2008 Red Hat, Inc. All rights reserved. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. +# +# Author(s): Bill Nottingham <notting@redhat.com> +# This file is stolen from anaconda code :). In rescue mode there will be +# no replication of code as this file will not go into the rescue mode image. +# + +"""Simple wrapper around HAL""" + +import dbus + +def get_device(udi): + """Retrieve all properties of a particular device (by UDI)""" + try: + bus = dbus.SystemBus() + haldev = dbus.Interface(bus.get_object("org.freedesktop.Hal", udi), \ + "org.freedesktop.Hal.Device") + props = haldev.GetAllProperties() + except dbus.exceptions.DBusException: + return None + + if props.has_key('block.device'): + props['device'] = props['block.device'].encode("utf-8") + elif props.has_key('linux.device_file'): + props['device'] = props['linux.device_file'].encode("utf-8") + elif props.has_key('net.interface'): + props['device'] = props['net.interface'].encode("utf-8") + else: + props['device'] = None + + props['description'] = '' + if props.has_key('info.product'): + if props.has_key('info.vendor'): + props['description'] = '%s %s' % \ + (props['info.vendor'],props['info.product']) + else: + props['description'] = props['info.product'] + else: + props['description'] = props['info.udi'] + if props.has_key('net.originating_device'): + pdev = get_device(props['net.originating_device']) + props['description'] = pdev['description'] + + return props + +def get_devices_by_type(type): + """Retrieve all devices of a particular type""" + ret = [] + try: + bus = dbus.SystemBus() + hal = dbus.Interface(bus.get_object("org.freedesktop.Hal", \ + "/org/freedesktop/Hal/Manager"),"org.freedesktop.Hal.Manager") + except: + return ret + for udi in hal.FindDeviceByCapability(type): + dev = get_device(udi) + if dev: + ret.append(dev) + return ret |