-
Notifications
You must be signed in to change notification settings - Fork 546
/
Copy pathcontainers_common.py
77 lines (67 loc) · 2.62 KB
/
containers_common.py
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
# Copyright (C) 2020 Red Hat, Inc., Pavel Moravec <[email protected]>
# This file is part of the sos project: https://github.com/sosreport/sos
#
# This copyrighted material is made available to anyone wishing to use,
# modify, copy, or redistribute it subject to the terms and conditions of
# version 2 of the GNU General Public License.
#
# See the LICENSE file in the source distribution for further information.
import os
from sos.report.plugins import Plugin, RedHatPlugin, UbuntuPlugin, PluginOpt
class ContainersCommon(Plugin, RedHatPlugin, UbuntuPlugin):
short_desc = 'Common container configs under {/etc,/usr/share}/containers'
plugin_name = 'containers_common'
profiles = ('container', )
packages = ('containers-common', )
option_list = [
PluginOpt('rootlessusers', default='', val_type=str,
desc='colon-delimited list of users to collect for')
]
def setup(self):
self.add_copy_spec([
'/etc/containers/*',
'/usr/share/containers/*',
'/etc/subuid',
'/etc/subgid',
])
self.add_file_tags({
"/etc/containers/policy.json": "containers_policy"
})
users_opt = self.get_option('rootlessusers')
users_list = []
if users_opt:
users_list = [x for x in users_opt.split(':') if x]
user_subcmds = [
'podman info',
'podman unshare cat /proc/self/uid_map',
'podman unshare cat /proc/self/gid_map',
'podman images',
'podman images --digests',
'podman pod ps',
'podman port --all',
'podman ps',
'podman ps -a',
'podman stats --no-stream --all',
'podman version',
'podman volume ls',
'buildah info',
'buildah unshare cat /proc/self/uid_map',
'buildah unshare cat /proc/self/gid_map',
'buildah containers',
'buildah containers --all',
'buildah images',
'buildah images --all',
'buildah version',
]
for user in users_list:
# collect user's containers' config
self.add_copy_spec(
'%s/.config/containers/' % (os.path.expanduser('~%s' % user)))
# collect user-status
self.add_cmd_output('loginctl user-status %s' % user)
# collect the user's related commands
self.add_cmd_output([
'machinectl -q shell %s@ /usr/bin/%s' % (user, cmd)
for cmd in user_subcmds
], foreground=True)
# vim: set et ts=4 sw=4 :