Skip to content
Snippets Groups Projects
Commit c0434945 authored by Marco Malavolti's avatar Marco Malavolti
Browse files

Added ECCS2 FedStats API

parent b8db0d6f
No related branches found
No related tags found
No related merge requests found
...@@ -4,11 +4,12 @@ import json ...@@ -4,11 +4,12 @@ import json
import logging import logging
import re import re
from eccs2properties import DAY, ECCS2LOGSDIR, ECCS2OUTPUTDIR from eccs2properties import DAY, ECCS2LOGSDIR, ECCS2OUTPUTDIR, ECCS2LISTFEDSURL, ECCS2LISTFEDSFILE
#from flask.logging import default_handler
from flask import Flask, request, jsonify from flask import Flask, request, jsonify
from flask_restful import Resource, Api from flask_restful import Resource, Api
from utils import getLogger from utils import getLogger, getListFeds, getRegAuthDict
#from eccs2properties import ECCS2FAILEDCMD, ECCS2FAILEDCMDIDP, ECCS2STDOUT, ECCS2STDERR, ECCS2STDOUTIDP, ECCS2STDERRIDP, ECCS2DIR, ECCS2NUMPROCESSES, ECCS2LISTIDPSURL, ECCS2LISTIDPSFILE, ECCS2LISTFEDSURL, ECCS2LISTFEDSFILE
app = Flask(__name__) app = Flask(__name__)
api = Api(app) api = Api(app)
...@@ -35,7 +36,7 @@ def existsInFile(file_path, value, research_item, eccsDataTable): ...@@ -35,7 +36,7 @@ def existsInFile(file_path, value, research_item, eccsDataTable):
if (eccsDataTable): if (eccsDataTable):
return '' return ''
else: else:
return jsonify(error='FileNotFound: ECCS2 script has not been executed for this day') return jsonify(error='FileNotFound: ECCS2 script has not been executed on this day')
for line in lines: for line in lines:
aux = json.loads(line) aux = json.loads(line)
...@@ -62,7 +63,6 @@ class EccsResults(Resource): ...@@ -62,7 +63,6 @@ class EccsResults(Resource):
file_path = "%s/eccs2_%s.log" % (ECCS2OUTPUTDIR,DAY) file_path = "%s/eccs2_%s.log" % (ECCS2OUTPUTDIR,DAY)
date = DAY date = DAY
pretty = 0
status = None status = None
idp = None idp = None
reg_auth = None reg_auth = None
...@@ -96,7 +96,7 @@ class EccsResults(Resource): ...@@ -96,7 +96,7 @@ class EccsResults(Resource):
if (eccsDataTable): if (eccsDataTable):
return '' return ''
else: else:
return jsonify(error='FileNotFound: ECCS2 script has not been executed for this day') return jsonify(error='FileNotFound: ECCS2 script has not been executed on this day')
for line in lines: for line in lines:
# Strip the line feed and carriage return characters # Strip the line feed and carriage return characters
...@@ -139,7 +139,76 @@ class EccsResults(Resource): ...@@ -139,7 +139,76 @@ class EccsResults(Resource):
# /eccs2/api/fedstats # /eccs2/api/fedstats
class FedStats(Resource): class FedStats(Resource):
def get(self): def get(self):
return {'fedstats':'It Works!'} list_feds = getListFeds(ECCS2LISTFEDSURL, ECCS2LISTFEDSFILE)
regAuthDict = getRegAuthDict(list_feds)
file_path = "%s/eccs2_%s.log" % (ECCS2OUTPUTDIR,DAY)
date = DAY
reg_auth = None
eccsDataTable = False
if ('date' in request.args):
date = request.args['date']
file_path = "%s/eccs2_%s.log" % (ECCS2OUTPUTDIR,date)
if ('reg_auth' in request.args):
reg_auth = request.args['reg_auth']
if (not existsInFile(file_path, reg_auth, "registrationAuthority", eccsDataTable)):
return jsonify(error="Registration Authority not found")
lines = []
results = []
try:
with open(file_path,"r",encoding="utf-8") as fo:
lines = fo.readlines()
except FileNotFoundError as e:
if (eccsDataTable):
return ''
else:
return jsonify(error='FileNotFound: ECCS2 script has not been executed on this day')
if (reg_auth):
resultDict = {'date': date, 'registrationAuthority': reg_auth, 'OK': 0, 'ERROR': 0, 'DISABLED': 0}
for line in lines:
# Strip the line feed and carriage return characters
line = line.rstrip("\n\r")
# Loads the json line into aux
aux = json.loads(line)
if (aux['registrationAuthority'] == reg_auth):
if (aux['status'] == "OK"):
resultDict['OK'] = resultDict['OK'] + 1
if (aux['status'] == "ERROR"):
resultDict['ERROR'] = resultDict['ERROR'] + 1
if (aux['status'] == "DISABLED"):
resultDict['DISABLED'] = resultDict['DISABLED'] + 1
results.append(resultDict)
return jsonify(results)
else:
for name,regAuth in regAuthDict.items():
resultDict = {'date': date, 'registrationAuthority': regAuth, 'OK': 0, 'ERROR': 0, 'DISABLED': 0}
for line in lines:
# Strip the line feed and carriage return characters
line = line.rstrip("\n\r")
# Loads the json line into aux
aux = json.loads(line)
if (regAuth == aux['registrationAuthority']):
if (aux['status'] == "OK"):
resultDict['OK'] = resultDict['OK'] + 1
if (aux['status'] == "ERROR"):
resultDict['ERROR'] = resultDict['ERROR'] + 1
if (aux['status'] == "DISABLED"):
resultDict['DISABLED'] = resultDict['DISABLED'] + 1
results.append(resultDict)
return jsonify(results)
# Routes # Routes
api.add_resource(Test, '/test') # Route_1 api.add_resource(Test, '/test') # Route_1
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment