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

« back to all changes in this revision

Viewing changes to scripts/cdimage_resource

  • 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
#!/usr/bin/python
 
2
#
 
3
# This file is part of Checkbox.
 
4
#
 
5
# Copyright 2009 Canonical Ltd.
 
6
#
 
7
# Checkbox is free software: you can redistribute it and/or modify
 
8
# it under the terms of the GNU General Public License as published by
 
9
# the Free Software Foundation, either version 3 of the License, or
 
10
# (at your option) any later version.
 
11
#
 
12
# Checkbox is distributed in the hope that it will be useful,
 
13
# but WITHOUT ANY WARRANTY; without even the implied warranty of
 
14
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
15
# GNU General Public License for more details.
 
16
#
 
17
# You should have received a copy of the GNU General Public License
 
18
# along with Checkbox.  If not, see <http://www.gnu.org/licenses/>.
 
19
#
 
20
import re
 
21
import sys
 
22
 
 
23
 
 
24
# Filename containing casper logs
 
25
CASPER_FILENAME = "/var/log/installer/casper.log"
 
26
 
 
27
# Filename containing media info
 
28
MEDIA_FILENAME = "/var/log/installer/media-info"
 
29
 
 
30
 
 
31
def get_disk_from_string(string):
 
32
    # Ubuntu 8.04.1 "Hardy Heron" - Release amd64 (20080702.1)
 
33
    distributor_regex = r"(?P<distributor>[\w\-]+)"
 
34
    release_regex = r"(?P<release>[\d\.]+)"
 
35
    codename_regex = r"(?P<codename>[^_\"]+)"
 
36
    official_regex = r"(?P<official>[\w ]+)"
 
37
    architecture_regex = r"(?P<architecture>[\w\+]+)"
 
38
    type_regex = r"(?P<type>Binary-\d+)"
 
39
    date_regex = r"(?P<date>[^\)]+)"
 
40
 
 
41
    string_regex = r"%s %s [_\"]%s[_\"] - %s %s (%s )?\(%s\)" % (distributor_regex,
 
42
        release_regex, codename_regex, official_regex, architecture_regex,
 
43
        type_regex, date_regex)
 
44
 
 
45
    disk = {}
 
46
    match = re.match(string_regex, string)
 
47
    if match:
 
48
        disk = match.groupdict()
 
49
        del disk["type"]
 
50
 
 
51
    return disk
 
52
 
 
53
def get_disk_from_casper(filename):
 
54
    disk = {}
 
55
 
 
56
    # Try to open the disk info file logged by the installer
 
57
    try:
 
58
        file = open(filename)
 
59
    except IOError:
 
60
        return disk
 
61
 
 
62
    line_regex = r"Found label '(?P<string>[^']+)'"
 
63
    line_pattern = re.compile(line_regex)
 
64
 
 
65
    for line in file.readlines():
 
66
        match = line_pattern.match(line)
 
67
        if match:
 
68
            string = match.group("string")
 
69
            disk = get_disk_from_string(string)
 
70
            break
 
71
 
 
72
    return disk
 
73
 
 
74
def get_disk_from_media(filename):
 
75
    try:
 
76
        file = open(filename)
 
77
    except IOError:
 
78
        return {}
 
79
 
 
80
    string = file.readline()
 
81
    return get_disk_from_string(string)
 
82
 
 
83
def main():
 
84
    disk = get_disk_from_media(MEDIA_FILENAME)
 
85
    if not disk:
 
86
        disk = get_disk_from_casper(CASPER_FILENAME)
 
87
 
 
88
    for key, value in disk.iteritems():
 
89
        print "%s: %s" % (key, value)
 
90
 
 
91
    return 0
 
92
 
 
93
 
 
94
if __name__ == "__main__":
 
95
    sys.exit(main())