aboutsummaryrefslogtreecommitdiffstats
path: root/sos/plugins/hardware.py
blob: 18835de0e5c1ad20b542c02b2e3d529a49b046e1 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
### 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, write to the Free Software
## Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.

from sos.plugins import Plugin, RedHatPlugin, UbuntuPlugin, DebianPlugin
from glob import glob
import os

class hardware(Plugin):
    """hardware related information
    """

    plugin_name = "hardware"

    def setup(self):
        self.addCopySpecs([
            "/proc/partitions",
            "/proc/cpuinfo",
            "/proc/meminfo",
            "/proc/ioports",
            "/proc/iomem",
            "/proc/interrupts",
            "/proc/irq",
            "/proc/scsi",
            "/proc/dma",
            "/proc/devices",
            "/proc/rtc",
            "/proc/ide",
            "/proc/bus",
            "/etc/stinit.def",
            "/proc/chandev",
            "/proc/dasd",
            "/proc/s390dbf/tape",
            "/sys/bus/scsi",
            "/sys/state",
            "/var/log/mcelog"])
        self.collectExtOutput("""/bin/echo -e "lspci:\n" ; /sbin/lspci ; /bin/echo -e "\nlspci -nvv:\n" ; /sbin/lspci -nvv ; /bin/echo -e "\nlspci -tv:\n" ; /sbin/lspci -tv""", suggest_filename = "lspci", root_symlink = "lspci")

        self.collectExtOutput("/usr/sbin/dmidecode", root_symlink = "dmidecode")

	if os.path.exists("/usr/bin/cpufreq-info"):
	        self.collectExtOutput("/usr/bin/cpufreq-info")
	if os.path.exists("/usr/bin/cpupower"):
		self.collectExtOutput("/usr/bin/cpupower info")
		self.collectExtOutput("/usr/bin/cpupower frequency-info")

        if self.policy().getArch().endswith("386"):
            self.collectExtOutput("/usr/sbin/x86info -a")

        if os.path.exists("/usr/bin/lsusb"):
            lsusb_path = "/usr/bin/lsusb"
        else:
            lsusb_path = "/usr/bin/lsusb"

        self.collectExtOutput("%s"% lsusb_path)
        self.collectExtOutput("%s -v"% lsusb_path)
        self.collectExtOutput("%s -t"% lsusb_path)

        self.collectExtOutput("/usr/bin/lshal")
        self.collectExtOutput("/usr/bin/systool -c fc_host -v")
        self.collectExtOutput("/usr/bin/systool -c scsi_host -v")

class RedHatHardware(hardware, RedHatPlugin):
    """hardware related information for Red Hat distribution
    """

    def setup(self):
        super(RedHatHardware, self).setup()
        hwpaths = glob("/usr/share/rhn/up2date*client/hardware.py")
	if (len(hwpaths) == 0):
            return
        self.collectExtOutput(hwpaths[0])


class DebianHardware(hardware, DebianPlugin, UbuntuPlugin):
    """hardware related information for Debian distribution
    """

    def setup(self):
        super(DebianHardware, self).setup()