@cryptotaxi247 / netdata-1 / commits / 3cf9ddd93

python.d.plugin: allow delete dimension in runtime (#5795)

##### Summary Fixes: #5793 add `del_dimension` method to Chart class. method does: - sets dimension `hidden` option - sets dimension `obsolete` option - pushes chart to netdata (write to stdout) - deletes dimension from chart.dimensions ##### Component Name [`/collectors/python.d.plugin/python_modules/bases/charts.py`](https://github.com/netdata/netdata/blob/master/collectors/python.d.plugin/python_modules/bases/charts.py) ##### Additional Information

Ilya Mashchenko committed Apr 4, 2019 at 11:30 UTC 3cf9ddd9333ec8057a517e5bdd6a8fdee35ea8d9
1 file changed +18 -6
collectors/python.d.plugin/python_modules/bases/charts.py
+18 -6
@@ -19,7 +19,7 @@ CHART_OBSOLETE = "CHART {type}.{id} '{name}' '{title}' '{units}' '{family}' '{co
19 "{chart_type} {priority} {update_every} '{hidden} obsolete'\n"
20
21
22 -DIMENSION_CREATE = "DIMENSION '{id}' '{name}' {algorithm} {multiplier} {divisor} '{hidden}'\n"
22 +DIMENSION_CREATE = "DIMENSION '{id}' '{name}' {algorithm} {multiplier} {divisor} '{hidden} {obsolete}'\n"
23 DIMENSION_SET = "SET '{id}' = {value}\n"
24
25 CHART_VARIABLE_SET = "VARIABLE CHART '{id}' = {value}\n"
@@ -200,12 +200,23 @@ class Chart:
200 self.dimensions.append(dim)
201 return dim
202
203 + def del_dimension(self, dimension_id):
204 + if dimension_id not in self:
205 + return
206 + idx = self.dimensions.index(dimension_id)
207 + dimension = self.dimensions[idx]
208 + dimension.params['hidden'] = 'hidden'
209 + dimension.params['obsolete'] = 'obsolete'
210 + self.create()
211 + self.dimensions.remove(dimension)
212 +
213 def hide_dimension(self, dimension_id, reverse=False):
204 - if dimension_id in self:
205 - idx = self.dimensions.index(dimension_id)
206 - dimension = self.dimensions[idx]
207 - dimension.params['hidden'] = 'hidden' if not reverse else str()
208 - self.refresh()
214 + if dimension_id not in self:
215 + return
216 + idx = self.dimensions.index(dimension_id)
217 + dimension = self.dimensions[idx]
218 + dimension.params['hidden'] = 'hidden' if not reverse else str()
219 + self.refresh()
220
221 def create(self):
222 """
@@ -288,6 +299,7 @@ class Dimension:
299 if not isinstance(self.params.get('divisor'), int):
300 self.params['divisor'] = 1
301 self.params.setdefault('hidden', '')
302 + self.params.setdefault('obsolete', '')
303
304 def __getattr__(self, item):
305 try: