Add permission file check in ceph module (#4177)
Luís Eduardo committed
Sep 12, 2018 at 19:56 UTC
0985ff92b0557e5d7ef944c581eab25e562da9bc
1 file changed
+17
-2
python.d/ceph.chart.py
+17
-2
@@ -9,6 +9,7 @@ try:
9
except ImportError:
10
CEPH = False
11
12
+import os
13
import json
14
from bases.FrameworkServices.SimpleService import SimpleService
15
@@ -26,8 +27,8 @@ CHARTS = {
27
'general_usage': {
28
'options': [None, 'Ceph General Space', 'KB', 'general', 'ceph.general_usage', 'stacked'],
29
'lines': [
29
- ['general_available', 'avail', 'absolute', 1, 1024],
30
- ['general_usage', 'used', 'absolute', 1, 1024]
30
+ ['general_available', 'avail', 'absolute'],
31
+ ['general_usage', 'used', 'absolute']
32
]
33
},
34
'general_objects': {
@@ -119,6 +120,20 @@ class Service(SimpleService):
120
if not (self.config_file and self.keyring_file):
121
self.error('config_file and/or keyring_file is not defined')
122
return False
123
+
124
+ # Verify files and permissions
125
+ if not (os.access(self.config_file, os.F_OK)):
126
+ self.error('{0} does not exist'.format(self.config_file))
127
+ return False
128
+ if not (os.access(self.keyring_file, os.F_OK)):
129
+ self.error('{0} does not exist'.format(self.keyring_file))
130
+ return False
131
+ if not (os.access(self.config_file, os.R_OK)):
132
+ self.error('Ceph plugin does not read {0}, define read permission.'.format(self.config_file))
133
+ return False
134
+ if not (os.access(self.keyring_file, os.R_OK)):
135
+ self.error('Ceph plugin does not read {0}, define read permission.'.format(self.keyring_file))
136
+ return False
137
try:
138
self.cluster = rados.Rados(conffile=self.config_file,
139
conf=dict(keyring=self.keyring_file))