~dstansby-deactivatedaccount/ubuntu/maverick/checkbox/checkbox-fix-525454

« back to all changes in this revision

Viewing changes to plugins/disk_info.py

  • Committer: Bazaar Package Importer
  • Author(s): Mathias Gug, Marc Tardif
  • Date: 2010-03-09 16:58:36 UTC
  • Revision ID: james.westby@ubuntu.com-20100309165836-26f22oe6ubppzx0d
Tags: 0.9
[ Marc Tardif ]
New upstream release (LP: #532882):
* Introduced job_prompt plugin to treat all jobs (suites, tests, etc.) as composites.
* Replaced the registry and resource scripts and centralized job iteration.
* Replaced dependency on dbus by using sudo/gksu/kdesudo instead.
* Replaced mktemp with mkdtemp for security purposes.
* Fixed strings in fingerprint and modem tests (LP: #457759)
* Fixed client side validation of Launchpad form (LP: #438671)
* Added device information to tags when reporting bugs with apport.
* Added shorthands for blacklist-file and whitelist-file.
* Added support for apport default configuration (LP: #465447)
* Added support for scrolled options list (LP: #411526)
* Added support for tests generated by suites to run as root.
* Added support for requirements in attachments.
* Added support for armv7l processor
* Added Autotest integration
* Added LTP integration
* Added Phoronix integration
* Added qa-regression-testing integration

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
#
2
 
# This file is part of Checkbox.
3
 
#
4
 
# Copyright 2008 Canonical Ltd.
5
 
#
6
 
# Checkbox is free software: you can redistribute it and/or modify
7
 
# it under the terms of the GNU General Public License as published by
8
 
# the Free Software Foundation, either version 3 of the License, or
9
 
# (at your option) any later version.
10
 
#
11
 
# Checkbox is distributed in the hope that it will be useful,
12
 
# but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 
# GNU General Public License for more details.
15
 
#
16
 
# You should have received a copy of the GNU General Public License
17
 
# along with Checkbox.  If not, see <http://www.gnu.org/licenses/>.
18
 
#
19
 
import re
20
 
 
21
 
from checkbox.properties import Path
22
 
from checkbox.plugin import Plugin
23
 
 
24
 
 
25
 
class DiskInfo(Plugin):
26
 
 
27
 
    # Filename where casper logs installation information.
28
 
    filename = Path(default="/var/log/installer/casper.log")
29
 
 
30
 
    def register(self, manager):
31
 
        super(DiskInfo, self).register(manager)
32
 
        self._manager.reactor.call_on("report", self.report)
33
 
 
34
 
    def report(self):
35
 
        # Try to open the disk info file logged by the installer
36
 
        try:
37
 
            file = open(self.filename)
38
 
        except IOError:
39
 
            return
40
 
 
41
 
        # Found label 'Ubuntu 8.04.1 _Hardy Heron_ - Release amd64 (20080702.1)'
42
 
        distributor_regex = r"(?P<distributor>[\w\-]+)"
43
 
        release_regex = r"(?P<release>[\d\.]+)"
44
 
        codename_regex = r"(?P<codename>[^_]+)"
45
 
        official_regex = r"(?P<official>[\w ]+)"
46
 
        architecture_regex = r"(?P<architecture>[\w\+]+)"
47
 
        type_regex = r"(?P<type>Binary-\d+)"
48
 
        date_regex = r"(?P<date>[^\)]+)"
49
 
 
50
 
        info_regex = r"%s %s _%s_ - %s %s (%s )?\(%s\)" % (distributor_regex,
51
 
            release_regex, codename_regex, official_regex, architecture_regex,
52
 
            type_regex, date_regex)
53
 
        line_regex = r"Found label '%s'" % info_regex
54
 
        line_pattern = re.compile(line_regex)
55
 
 
56
 
        for line in file.readlines():
57
 
            match = line_pattern.match(line)
58
 
            if match:
59
 
                keys = ["distributor", "release", "codename", "official",
60
 
                    "architecture", "date"]
61
 
                values = [match.group(k) for k in keys]
62
 
                message = dict(zip(keys, values))
63
 
                self._manager.reactor.fire("report-disk", message)
64
 
                break
65
 
 
66
 
 
67
 
factory = DiskInfo