~launchpad-pqm/launchpad/devel

« back to all changes in this revision

Viewing changes to lib/lp/hardwaredb/scripts/hwdbsubmissions.py

  • Committer: Launchpad Patch Queue Manager
  • Date: 2011-08-30 00:58:33 UTC
  • mfrom: (13800.1.2 test-hwsubm)
  • Revision ID: launchpad@pqm.canonical.com-20110830005833-cqgf23ogpvg222ns
[r=flacoste][bug=835103] allow to process HWDB submissions from the
        checkbox version in Lucid, Maverick, Natty.

Show diffs side-by-side

added added

removed removed

Lines of Context:
680
680
                 where the values are the parsing results of _parseHAL,
681
681
                 _parseProcessors, _parseAliases.
682
682
        """
683
 
        hardware_data = {}
 
683
        # Submissions from checkbox for Lucid, Maverick and Natty
 
684
        # unfortunately do not contain a <sysfs-attributes> node.
 
685
        # A default value here allows us to mark these submissions.
 
686
        # See also bug 835103.
 
687
        hardware_data = {
 
688
            'sysfs-attributes': None,
 
689
            }
684
690
        for node in hardware_node.getchildren():
685
691
            parser = self._parse_hardware_section[node.tag]
686
692
            result = parser(node)
1328
1334
        should have a corresponding sysfs node, and this node should
1329
1335
        define the attributes 'vendor', 'model', 'type'.
1330
1336
        """
 
1337
        # Broken submissions from Lucid, Maverick and Natty. We'll have
 
1338
        # to deal with incomplete data for SCSI devices in this case if
 
1339
        # we don't want to drop the entire submission, so just pretend
 
1340
        # that things are fine.
 
1341
        # See also bug 835103.
 
1342
        if sysfs_data is None:
 
1343
            return True
1331
1344
        for device in udev_data:
1332
1345
            subsystem = device['E'].get('SUBSYSTEM')
1333
1346
            if subsystem != 'scsi':
1456
1469
        dmi_data = parsed_data['hardware']['dmi']
1457
1470
        for udev_data in parsed_data['hardware']['udev']:
1458
1471
            device_path = udev_data['P']
 
1472
            if sysfs_data is not None:
 
1473
                sysfs_data_for_device = sysfs_data.get(device_path)
 
1474
            else:
 
1475
                # broken Lucid, Maverick and Natty submissions.
 
1476
                # See also bug 835103.
 
1477
                sysfs_data_for_device = None
1459
1478
            if device_path == UDEV_ROOT_PATH:
1460
1479
                device = UdevDevice(
1461
 
                    self, udev_data, sysfs_data=sysfs_data.get(device_path),
 
1480
                    self, udev_data, sysfs_data=sysfs_data_for_device,
1462
1481
                    dmi_data=dmi_data)
1463
1482
            else:
1464
1483
                device = UdevDevice(
1465
 
                    self, udev_data, sysfs_data=sysfs_data.get(device_path))
 
1484
                    self, udev_data, sysfs_data=sysfs_data_for_device)
1466
1485
            self.devices[device_path] = device
1467
1486
 
1468
1487
        # The parent-child relations are derived from the path names of
2731
2750
        # udev sets the property SUBSYSTEM to "scsi" for a number of
2732
2751
        # different nodes: SCSI hosts, SCSI targets and SCSI devices.
2733
2752
        # They are distiguished by the property DEVTYPE.
 
2753
 
 
2754
        # Hack for broken submissions from Lucid, Maverick and Natty:
 
2755
        # If we don't have sysfs information, pretend that no SCSI
 
2756
        # related node corresponds to a real device.
 
2757
        # See also bug 835103.
 
2758
        if self.sysfs is None:
 
2759
            return False
2734
2760
        properties = self.udev['E']
2735
2761
        return (properties.get('SUBSYSTEM') == 'scsi' and
2736
2762
                properties.get('DEVTYPE') == 'scsi_device')