Skip to content

Commit 7c5ce66

Browse files
authored
Merge pull request #253 from Helene/metadata_time
Add endpoint to query the timestamp of the metadata cache latest update
2 parents 9554bac + 17c72b8 commit 7c5ce66

File tree

2 files changed

+21
-1
lines changed

2 files changed

+21
-1
lines changed

source/metadata.py

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,8 @@
2828
from utils import execution_time
2929
from messages import ERR, MSG
3030
from metaclasses import Singleton
31-
from time import sleep
31+
from time import time, sleep
32+
from datetime import datetime
3233

3334

3435
local_cache = []
@@ -42,6 +43,7 @@ def __init__(self, **kwargs):
4243
self.__sensorsConf = None
4344
self.__metaData = None
4445
self.__metricsDesc = {}
46+
self.__updateTime = None
4547
self.logger = kwargs['logger']
4648
self.server = kwargs['server']
4749
self.port = kwargs['port']
@@ -76,6 +78,10 @@ def metaData(self):
7678
def metricsDesc(self):
7779
return self.__metricsDesc
7880

81+
@property
82+
def getUpdateTime(self):
83+
return self.__updateTime
84+
7985
def getSensorPeriodForMetric(self, metric):
8086
sensor = self.metaData.getSensorForMetric(metric)
8187
if not sensor:
@@ -139,6 +145,7 @@ def __initializeTables(self):
139145
sleep(self.sleepTime)
140146
else:
141147
self.__metaData = Topo(topoStr)
148+
self.__updateTime = time()
142149
foundItems = len(self.metaData.allParents) - 1
143150
sensors = self.metaData.sensorsSpec.keys()
144151
self.logger.info(MSG['MetaSuccess'])
@@ -163,6 +170,12 @@ def GET(self, **params):
163170
resp = self.update()
164171
# resp = json.dumps(resp)
165172

173+
# /metadata/time
174+
elif '/metadata/time' == cherrypy.request.script_name:
175+
# cherrypy.response.headers['Content-Type'] = 'application/json'
176+
ts = int(self.getUpdateTime)
177+
resp = [datetime.utcfromtimestamp(ts).strftime('%Y-%m-%d %H:%M:%S')]
178+
166179
# /metadata/sensorsconfig
167180
elif '/metadata/sensorsconfig' == cherrypy.request.script_name:
168181
# cherrypy.response.headers['Content-Type'] = 'application/json'
@@ -189,6 +202,7 @@ def update(self, refresh_all=False):
189202
self.logger.error(MSG['NoData']) # Please check the pmcollector is properly configured and running.
190203
raise cherrypy.HTTPError(404, ERR[404])
191204
self.__metaData = Topo(topoStr)
205+
self.__updateTime = time()
192206
self.logger.details(MSG['MetaSuccess'])
193207
self.logger.debug(MSG['ReceivAttrValues'].format('parents', ", ".join(self.metaData.allParents)))
194208
return ({'msg': MSG['MetaSuccess']})

source/zimonGrafanaIntf.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -277,6 +277,12 @@ def main(argv):
277277
{'request.dispatch': cherrypy.dispatch.MethodDispatcher()}
278278
}
279279
)
280+
# query for metadata (zimon) last update time
281+
cherrypy.tree.mount(mdHandler, '/metadata/time',
282+
{'/':
283+
{'request.dispatch': cherrypy.dispatch.MethodDispatcher()}
284+
}
285+
)
280286
# query for list configured zimon sensors
281287
cherrypy.tree.mount(mdHandler, '/metadata/sensorsconfig',
282288
{'/':

0 commit comments

Comments
 (0)