33
33
import sys
34
34
import syslog
35
35
import subprocess
36
+ from swsscommon .swsscommon import events_init_publisher , events_deinit_publisher , event_publish
37
+ from swsscommon .swsscommon import FieldValueMap
36
38
37
39
UPPER_DIR = "/run/mount/upper"
38
40
WORK_DIR = "/run/mount/work"
39
41
MOUNTS_FILE = "/proc/mounts"
40
42
43
+ EVENTS_PUBLISHER_SOURCE = "sonic-events-host"
44
+ EVENTS_PUBLISHER_TAG = "event-disk"
45
+ events_handle = None
46
+
41
47
chk_log_level = syslog .LOG_ERR
42
48
43
49
def _log_msg (lvl , pfx , msg ):
44
50
if lvl <= chk_log_level :
45
51
print ("{}: {}" .format (pfx , msg ))
46
52
syslog .syslog (lvl , msg )
47
53
54
+
48
55
def log_err (m ):
49
56
_log_msg (syslog .LOG_ERR , "Err" , m )
50
57
@@ -57,11 +64,18 @@ def log_debug(m):
57
64
_log_msg (syslog .LOG_DEBUG , "Debug" , m )
58
65
59
66
67
+ def event_pub ():
68
+ param_dict = FieldValueMap ()
69
+ param_dict ["fail_type" ] = "read_only"
70
+ event_publish (events_handle , EVENTS_PUBLISHER_TAG , param_dict )
71
+
72
+
60
73
def test_writable (dirs ):
61
74
for d in dirs :
62
75
rw = os .access (d , os .W_OK )
63
76
if not rw :
64
77
log_err ("{} is not read-write" .format (d ))
78
+ event_pub ()
65
79
return False
66
80
else :
67
81
log_debug ("{} is Read-Write" .format (d ))
@@ -145,12 +159,13 @@ def do_check(skip_mount, dirs):
145
159
# Check if mounted
146
160
if (not ret ) and is_mounted (dirs ):
147
161
log_err ("READ-ONLY: Mounted {} to make Read-Write" .format (dirs ))
162
+ event_pub ()
148
163
149
164
return ret
150
165
151
166
152
167
def main ():
153
- global chk_log_level
168
+ global chk_log_level , events_handle
154
169
155
170
parser = argparse .ArgumentParser (
156
171
description = "check disk for Read-Write and mount etc & home as Read-Write" )
@@ -163,7 +178,12 @@ def main():
163
178
args = parser .parse_args ()
164
179
165
180
chk_log_level = args .loglvl
181
+
182
+ events_handle = events_init_publisher (EVENTS_PUBLISHER_SOURCE )
183
+
166
184
ret = do_check (args .skip_mount , args .dirs .split ("," ))
185
+
186
+ events_deinit_publisher (events_handle )
167
187
return ret
168
188
169
189
0 commit comments