handle exception and restart pullingafter timeout

This commit is contained in:
Simon Zeyer 2024-09-26 08:42:58 +00:00
parent 5b923badf7
commit 41e2f9a2ab

View File

@ -238,41 +238,54 @@ async function onStateChange(consumer_id, status_id){
}
}
async function startAPI() {
let _auth = await auth()
if(_auth){
global.logger.info('auth OK')
var _pulled_data = await pull()
while(_pulled_data !== null){
if(_pulled_data !== null){
if(_pulled_data.success){
var d = _pulled_data.data
if('cluster' in d){
pulled_data['consumer'] = d['cluster']['consumer']
pulled_data['status'] = d['cluster']['status']
}
if('monitor' in d){
var m = d['monitor'][config.MONITOR_ID]
Object.entries(m).forEach(([key, value]) => {
// wenn 'monitor' nicht in pulled_data ist das der erste pull, dann alle status in ALARMiator abgleichen (betrifft hautsächlich den EB/NEB status)
if(!('monitor' in pulled_data) || ('monitor' in pulled_data && value.status !== pulled_data['monitor'][key]['status'])){
onStateChange(value.id,value.status )
}
});
pulled_data['monitor'] = d['monitor'][config.MONITOR_ID]
}
}
}
_pulled_data = await pull()
if(_pulled_data === null){
global.logger.debug('_pulled_data === null, reauth')
_auth = await auth()
_pulled_data = await pull()
if(_pulled_data === null){
global.logger.debug('_pulled_data === null after reauth, EXIT!!')
}
}
}
}
global.logger.info('auth mit API_KEY war nicht erfolgreich. Service ist gestoppt und startet nicht mehr automatisch??')
function sleep(ms) {
return new Promise((resolve) => {
setTimeout(resolve, ms);
});
}
async function startAPI() {
while(True){
try{
let _auth = await auth()
if(_auth){
global.logger.info('auth OK')
var _pulled_data = await pull()
while(_pulled_data !== null){
if(_pulled_data !== null){
if(_pulled_data.success){
var d = _pulled_data.data
if('cluster' in d){
pulled_data['consumer'] = d['cluster']['consumer']
pulled_data['status'] = d['cluster']['status']
}
if('monitor' in d){
var m = d['monitor'][config.MONITOR_ID]
Object.entries(m).forEach(([key, value]) => {
// wenn 'monitor' nicht in pulled_data ist das der erste pull, dann alle status in ALARMiator abgleichen (betrifft hautsächlich den EB/NEB status)
if(!('monitor' in pulled_data) || ('monitor' in pulled_data && value.status !== pulled_data['monitor'][key]['status'])){
onStateChange(value.id,value.status )
}
});
pulled_data['monitor'] = d['monitor'][config.MONITOR_ID]
}
}
}
_pulled_data = await pull()
if(_pulled_data === null){
global.logger.debug('_pulled_data === null, reauth')
_auth = await auth()
_pulled_data = await pull()
if(_pulled_data === null){
global.logger.debug('_pulled_data === null after reauth, EXIT!!')
}
}
}
}
}catch(err){
console.error(err);
}
await sleep(10000);
global.logger.info('auth mit API_KEY war nicht erfolgreich. Service ist gestoppt und startet nicht mehr automatisch??')
}
}