@@ -39,6 +39,7 @@ def __init__(self, logger, mdHandler, port, raw_data=False):
39
39
self .raw_data = raw_data
40
40
self .static_sensors_list = ['CPU' , 'Memory' , 'GPFSFileset' ]
41
41
self .cache_strategy = False
42
+ self .endpoints = {}
42
43
self .caching_collectors = []
43
44
if self .cache_strategy :
44
45
self .initialize_cache_collectors ()
@@ -148,260 +149,30 @@ def GET(self, **params):
148
149
raise cherrypy .HTTPError (400 , MSG [400 ])
149
150
150
151
# /update
151
- if 'update' in cherrypy .request .script_name :
152
+ if '/ update' == cherrypy .request .script_name :
152
153
# cherrypy.response.headers['Content-Type'] = 'application/json'
153
154
resp = self .md .update ()
154
155
155
- # /metrics_gpfs_disk
156
- elif '/metrics_gpfs_disk' == cherrypy .request .script_name :
157
- resp = self .metrics (['GPFSDisk' ])
158
- cherrypy .response .headers ['Content-Type' ] = 'text/plain'
159
- resString = '\n ' .join (resp ) + '\n '
160
- return resString
161
-
162
- # /metrics_gpfs_filesystem
163
- elif 'metrics_gpfs_filesystem' in cherrypy .request .script_name :
164
- resp = self .metrics (['GPFSFilesystem' ])
165
- cherrypy .response .headers ['Content-Type' ] = 'text/plain'
166
- resString = '\n ' .join (resp ) + '\n '
167
- return resString
168
-
169
- # /metrics_gpfsnsddisk
170
- elif 'metrics_gpfs_nsddisk' in cherrypy .request .script_name :
171
- resp = self .metrics (['GPFSNSDDisk' ])
172
- cherrypy .response .headers ['Content-Type' ] = 'text/plain'
173
- resString = '\n ' .join (resp ) + '\n '
174
- return resString
175
-
176
- # /metrics_gpfs_poolio
177
- elif 'metrics_gpfs_poolio' in cherrypy .request .script_name :
178
- resp = self .metrics (['GPFSPoolIO' ])
179
- cherrypy .response .headers ['Content-Type' ] = 'text/plain'
180
- resString = '\n ' .join (resp ) + '\n '
181
- return resString
182
-
183
- # /metrics_gpfs_vfsx
184
- elif 'metrics_gpfs_vfsx' in cherrypy .request .script_name :
185
- resp = self .metrics (['GPFSVFSX' ])
186
- cherrypy .response .headers ['Content-Type' ] = 'text/plain'
187
- resString = '\n ' .join (resp ) + '\n '
188
- return resString
189
-
190
- # /metrics_gpfsioc
191
- elif 'metrics_gpfsioc' in cherrypy .request .script_name :
192
- resp = self .metrics (['GPFSIOC' ])
193
- cherrypy .response .headers ['Content-Type' ] = 'text/plain'
194
- resString = '\n ' .join (resp ) + '\n '
195
- return resString
196
-
197
- # /metrics_gpfs_vio64
198
- elif 'metrics_gpfs_vio64' in cherrypy .request .script_name :
199
- resp = self .metrics (['GPFSVIO64' ])
200
- cherrypy .response .headers ['Content-Type' ] = 'text/plain'
201
- resString = '\n ' .join (resp ) + '\n '
202
- return resString
203
-
204
- # /metrics_gpfs_pddisk
205
- elif 'metrics_gpfs_pddisk' in cherrypy .request .script_name :
206
- resp = self .metrics (['GPFSPDDisk' ])
207
- cherrypy .response .headers ['Content-Type' ] = 'text/plain'
208
- resString = '\n ' .join (resp ) + '\n '
209
- return resString
210
-
211
- # /metrics_gpfs_vflush
212
- elif 'metrics_gpfs_vflush' in cherrypy .request .script_name :
213
- resp = self .metrics (['GPFSvFLUSH' ])
214
- cherrypy .response .headers ['Content-Type' ] = 'text/plain'
215
- resString = '\n ' .join (resp ) + '\n '
216
- return resString
217
-
218
- # /metrics_gpfs_node
219
- elif 'metrics_gpfs_node' in cherrypy .request .script_name :
220
- resp = self .metrics (['GPFSNode' ])
221
- cherrypy .response .headers ['Content-Type' ] = 'text/plain'
222
- resString = '\n ' .join (resp ) + '\n '
223
- return resString
224
-
225
- # /metrics_gpfs_nodeapi
226
- elif 'metrics_gpfs_nodeapi' in cherrypy .request .script_name :
227
- resp = self .metrics (['GPFSNodeAPI' ])
228
- cherrypy .response .headers ['Content-Type' ] = 'text/plain'
229
- resString = '\n ' .join (resp ) + '\n '
230
- return resString
231
-
232
- # /metrics_gpfs_filesystemapi
233
- elif 'metrics_gpfs_filesystemapi' in cherrypy .request .script_name :
234
- resp = self .metrics (['GPFSFilesystemAPI' ])
235
- cherrypy .response .headers ['Content-Type' ] = 'text/plain'
236
- resString = '\n ' .join (resp ) + '\n '
237
- return resString
238
-
239
- # /metrics_gpfs_lroc
240
- elif 'metrics_gpfs_lroc' in cherrypy .request .script_name :
241
- resp = self .metrics (['GPFSLROC' ])
242
- cherrypy .response .headers ['Content-Type' ] = 'text/plain'
243
- resString = '\n ' .join (resp ) + '\n '
244
- return resString
245
-
246
- # /metrics_gpfs_chms
247
- elif 'metrics_gpfs_chms' in cherrypy .request .script_name :
248
- resp = self .metrics (['GPFSCHMS' ])
249
- cherrypy .response .headers ['Content-Type' ] = 'text/plain'
250
- resString = '\n ' .join (resp ) + '\n '
251
- return resString
252
-
253
- # /metrics_gpfs_afm
254
- elif '/metrics_gpfs_afm' == cherrypy .request .script_name :
255
- resp = self .metrics (['GPFSAFM' ])
256
- cherrypy .response .headers ['Content-Type' ] = 'text/plain'
257
- resString = '\n ' .join (resp ) + '\n '
258
- return resString
259
-
260
- # /metrics_gpfs_afmfs
261
- elif '/metrics_gpfs_afmfs' == cherrypy .request .script_name :
262
- resp = self .metrics (['GPFSAFMFS' ])
263
- cherrypy .response .headers ['Content-Type' ] = 'text/plain'
264
- resString = '\n ' .join (resp ) + '\n '
265
- return resString
266
-
267
- # /metrics_gpfs_afmfset
268
- elif '/metrics_gpfs_afmfset' == cherrypy .request .script_name :
269
- resp = self .metrics (['GPFSAFMFSET' ])
270
- cherrypy .response .headers ['Content-Type' ] = 'text/plain'
271
- resString = '\n ' .join (resp ) + '\n '
272
- return resString
273
-
274
- # /metrics_gpfs_rpcs
275
- elif 'metrics_gpfs_rpcs' in cherrypy .request .script_name :
276
- resp = self .metrics (['GPFSRPCS' ])
277
- cherrypy .response .headers ['Content-Type' ] = 'text/plain'
278
- resString = '\n ' .join (resp ) + '\n '
279
- return resString
280
-
281
- # /metrics_gpfs_filesetquota
282
- elif 'metrics_gpfs_filesetquota' in cherrypy .request .script_name :
283
- resp = self .metrics (['GPFSFilesetQuota' ])
284
- cherrypy .response .headers ['Content-Type' ] = 'text/plain'
285
- resString = '\n ' .join (resp ) + '\n '
286
- return resString
287
-
288
- # /metrics_gpfs_fileset
289
- elif 'metrics_gpfs_fileset' in cherrypy .request .script_name :
290
- resp = self .metrics (['GPFSFileset' ])
291
- cherrypy .response .headers ['Content-Type' ] = 'text/plain'
292
- resString = '\n ' .join (resp ) + '\n '
293
- return resString
294
-
295
- # /metrics_gpfs_pool
296
- elif 'metrics_gpfs_pool' in cherrypy .request .script_name :
297
- resp = self .metrics (['GPFSPool' ])
298
- cherrypy .response .headers ['Content-Type' ] = 'text/plain'
299
- resString = '\n ' .join (resp ) + '\n '
300
- return resString
301
-
302
- # /metrics_gpfs_diskcap
303
- elif '/metrics_gpfs_diskcap' == cherrypy .request .script_name :
304
- resp = self .metrics (['GPFSDiskCap' ])
305
- cherrypy .response .headers ['Content-Type' ] = 'text/plain'
306
- resString = '\n ' .join (resp ) + '\n '
307
- return resString
308
-
309
- # /metrics_gpfs_waiters
310
- elif 'metrics_gpfs_waiters' in cherrypy .request .script_name :
311
- resp = self .metrics (['GPFSWaiters' ])
312
- cherrypy .response .headers ['Content-Type' ] = 'text/plain'
313
- resString = '\n ' .join (resp ) + '\n '
314
- return resString
315
-
316
- # /metrics_gpfs_event_producer
317
- elif 'metrics_gpfs_event_producer' in cherrypy .request .script_name :
318
- resp = self .metrics (['GPFSEventProducer' ])
319
- cherrypy .response .headers ['Content-Type' ] = 'text/plain'
320
- resString = '\n ' .join (resp ) + '\n '
321
- return resString
322
-
323
- # /metrics_gpfs_mutex
324
- elif 'metrics_gpfs_mutex' in cherrypy .request .script_name :
325
- resp = self .metrics (['GPFSMutex' ])
326
- cherrypy .response .headers ['Content-Type' ] = 'text/plain'
327
- resString = '\n ' .join (resp ) + '\n '
328
- return resString
329
-
330
- # /metrics_gpfs_condvar
331
- elif 'metrics_gpfs_condvar' in cherrypy .request .script_name :
332
- resp = self .metrics (['GPFSCondvar' ])
333
- cherrypy .response .headers ['Content-Type' ] = 'text/plain'
334
- resString = '\n ' .join (resp ) + '\n '
335
- return resString
336
-
337
- # /metrics_gpfs_qos
338
- elif 'metrics_gpfs_qos' in cherrypy .request .script_name :
339
- resp = self .metrics (['GPFSQoS' ])
340
- cherrypy .response .headers ['Content-Type' ] = 'text/plain'
341
- resString = '\n ' .join (resp ) + '\n '
342
- return resString
343
-
344
- # /metrics_gpfs_fcm
345
- elif 'metrics_gpfs_fcm' in cherrypy .request .script_name :
346
- resp = self .metrics (['GPFSFCM' ])
347
- cherrypy .response .headers ['Content-Type' ] = 'text/plain'
348
- resString = '\n ' .join (resp ) + '\n '
349
- return resString
350
-
351
- # /metrics_nfsio
352
- elif 'metrics_nfsio' in cherrypy .request .script_name :
353
- resp = self .metrics (['NFSIO' ])
354
- cherrypy .response .headers ['Content-Type' ] = 'text/plain'
355
- resString = '\n ' .join (resp ) + '\n '
356
- return resString
357
-
358
- # /metrics_smb_stats
359
- elif 'metrics_smb_stats' in cherrypy .request .script_name :
360
- resp = self .metrics (['SMBStats' ])
361
- cherrypy .response .headers ['Content-Type' ] = 'text/plain'
362
- resString = '\n ' .join (resp ) + '\n '
363
- return resString
364
-
365
- # /metrics_smb_globalstats
366
- elif 'metrics_smb_globalstats' in cherrypy .request .script_name :
367
- resp = self .metrics (['SMBGlobalStats' ])
368
- cherrypy .response .headers ['Content-Type' ] = 'text/plain'
369
- resString = '\n ' .join (resp ) + '\n '
370
- return resString
371
-
372
- # /metrics_ctdb_stats
373
- elif 'metrics_ctdb_stats' in cherrypy .request .script_name :
374
- resp = self .metrics (['CTDBStats' ])
375
- cherrypy .response .headers ['Content-Type' ] = 'text/plain'
376
- resString = '\n ' .join (resp ) + '\n '
377
- return resString
378
-
379
- # /metrics_ctdb_dbstats
380
- elif 'metrics_ctdb_dbstats' in cherrypy .request .script_name :
381
- resp = self .metrics (['CTDBDBStats' ])
156
+ elif self .endpoints and self .endpoints .get (cherrypy .request .script_name ,
157
+ None ):
158
+ sensor = self .endpoints [cherrypy .request .script_name ]
159
+ resp = self .metrics ([sensor ])
382
160
cherrypy .response .headers ['Content-Type' ] = 'text/plain'
383
161
resString = '\n ' .join (resp ) + '\n '
384
162
return resString
385
163
386
164
# /metrics
387
- elif 'metrics' in cherrypy .request .script_name :
165
+ elif '/ metrics' == cherrypy .request .script_name :
388
166
resp = self .metrics ()
389
167
cherrypy .response .headers ['Content-Type' ] = 'text/plain'
390
168
resString = '\n ' .join (resp ) + '\n '
391
169
return resString
392
170
393
- elif 'aggregators' in cherrypy .request .script_name :
394
- resp = ["noop" , "sum" , "avg" , "max" , "min" , "rate" ]
395
-
396
- elif 'config/filters' in cherrypy .request .script_name :
397
- supportedFilters = {}
398
- filterDesc = {}
399
- filterDesc ['description' ] = '''Accepts an exact value or a regular expressions and matches against
400
- values for the given tag. The value can be omitted if the filter is used to specify groupBy on the tag only.'''
401
- filterDesc ['examples' ] = '''node=pm_filter(machine1), node=pm_filter(machine[1-6]), node=pm_filter(m1|m2),
402
- node=pm_filter(mac.*), node=pm_filter((?!^z).*)'''
403
- supportedFilters ['pm_filter' ] = filterDesc
404
- resp = supportedFilters
171
+ else :
172
+ self .logger .error (MSG ['EndpointNotSupported' ].format (sensor ))
173
+ raise cherrypy .HTTPError (400 ,
174
+ MSG ['EndpointNotSupported' ].format (
175
+ cherrypy .request .script_name ))
405
176
406
177
del cherrypy .response .headers ['Allow' ]
407
178
cherrypy .response .headers ['Access-Control-Allow-Origin' ] = '*'
0 commit comments