@cryptotaxi247 / netdata-1 / commits / 0985ff92b

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))