do not really delete a chart just suppress it if it's not updated
lgz committed
Oct 22, 2017 at 00:35 UTC
26f35c8a75a58e936ec24fce49553f7f44c7cbb1
2 files changed
+13
-2
python.d/python_modules/bases/FrameworkServices/SimpleService.py
+3
-1
@@ -211,10 +211,12 @@ class SimpleService(Thread, PythonDLimitedLogger, OldVersionCompatibility, objec
211
212
for chart in self.charts.penalty_exceeded(penalty_max=CHART_OBSOLETE_PENALTY):
213
safe_print(chart.obsolete())
214
- del self.charts[chart.params['id']]
214
+ chart.suppress()
215
self.error("chart '{0}' was removed due to non updating".format(chart.name))
216
217
for chart in self.charts:
218
+ if not chart.alive:
219
+ continue
220
dimension_updated, variables_updated = str(), str()
221
222
for dimension in chart:
python.d/python_modules/bases/charts.py
+10
-1
@@ -111,7 +111,7 @@ class Charts:
111
:param penalty_max: <int>
112
:return:
113
"""
114
- return (chart for chart in self if chart.penalty > penalty_max)
114
+ return (chart for chart in self if chart.penalty > penalty_max and chart.alive)
115
116
def add_chart(self, params):
117
"""
@@ -153,6 +153,7 @@ class Chart:
153
154
self.dimensions = list()
155
self.variables = set()
156
+ self.alive = True
157
self.penalty = 0
158
159
def __repr__(self):
@@ -167,6 +168,13 @@ class Chart:
168
def __contains__(self, item):
169
return item in [repr(d) for d in self.dimensions]
170
171
+ def suppress(self):
172
+ self.alive = False
173
+
174
+ def unsuppress(self):
175
+ self.penalty = 0
176
+ self.alive = True
177
+
178
def add_variable(self, variable):
179
"""
180
:param variable: <list>
@@ -193,6 +201,7 @@ class Chart:
201
:return:
202
"""
203
dim = self.add_dimension(dimension)
204
+ self.unsuppress()
205
safe_print(self.create(dim))
206
207
def create(self, dimension=None):