2
# This file is part of Checkbox.
4
# Copyright 2008 Canonical Ltd.
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.
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.
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/>.
21
from checkbox.properties import Path
22
from checkbox.plugin import Plugin
25
class DiskInfo(Plugin):
27
# Filename where casper logs installation information.
28
filename = Path(default="/var/log/installer/casper.log")
30
def register(self, manager):
31
super(DiskInfo, self).register(manager)
32
self._manager.reactor.call_on("report", self.report)
35
# Try to open the disk info file logged by the installer
37
file = open(self.filename)
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>[^\)]+)"
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)
56
for line in file.readlines():
57
match = line_pattern.match(line)
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)