1st Version
This commit is contained in:
0
vrpmdvserver/__init__.py
Normal file
0
vrpmdvserver/__init__.py
Normal file
5
vrpmdvserver/__pycache__/.gitignore
vendored
Normal file
5
vrpmdvserver/__pycache__/.gitignore
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
/vrpmdvdata.cpython-310.pyc
|
||||
/vrpmdvmonitoring.cpython-310.pyc
|
||||
/vrpmdvmonitoringschema.cpython-310.pyc
|
||||
/vrpmdvmonreq.cpython-310.pyc
|
||||
/vrpmdvmonreqschema.cpython-310.pyc
|
||||
139
vrpmdvserver/vrpmdvdata.py
Normal file
139
vrpmdvserver/vrpmdvdata.py
Normal file
@@ -0,0 +1,139 @@
|
||||
from uuid import uuid4
|
||||
import uuid
|
||||
from flask import jsonify
|
||||
import json
|
||||
|
||||
# from vrpmdvmonitoringschema import VRPMDV_MonitoringSchema
|
||||
# from vrpmdvmonitoring import VRPMDV_Monitoring
|
||||
|
||||
from vrpmdvmonitoringschema import VRPMDV_MonitoringSchema
|
||||
from vrpmdvmonitoring import VRPMDV_Monitoring
|
||||
|
||||
class VRPMDV_Data:
|
||||
|
||||
def __init__(self):
|
||||
#self.loaded = False
|
||||
self.mons = []
|
||||
self.loaded = self.loadFile()
|
||||
|
||||
def loadFile(self):
|
||||
try:
|
||||
with open('./mons.json', 'r') as f:
|
||||
fmons = f.read()
|
||||
|
||||
if not fmons:
|
||||
# return no Item
|
||||
return True
|
||||
else:
|
||||
# data = json.loads(fmons)
|
||||
schema = VRPMDV_MonitoringSchema(many=True)
|
||||
res = schema.loads(fmons) # data
|
||||
self.mons = schema.loads(fmons) # .append(res)
|
||||
return True
|
||||
except:
|
||||
#nothing todo
|
||||
print("file not found")
|
||||
|
||||
def saveFile(self):
|
||||
try:
|
||||
with open('./mons.json', 'w') as f:
|
||||
schema = VRPMDV_MonitoringSchema()
|
||||
result = schema.dumps(self.mons, many=True)
|
||||
f.write(result)
|
||||
return True
|
||||
except:
|
||||
#nothing todo
|
||||
print("could not write file")
|
||||
|
||||
def findMon(mon):
|
||||
return mon
|
||||
|
||||
def getMonitorings(self):
|
||||
# 1st time read file
|
||||
if not self.loaded :
|
||||
self.loaded = self.loadFile()
|
||||
|
||||
schema = VRPMDV_MonitoringSchema()
|
||||
result = schema.dumps(self.mons, many=True)
|
||||
return result
|
||||
|
||||
def getMonitoring(self, vrpmid):
|
||||
try:
|
||||
matched_obj = next(x for x in self.mons if str(x.id) == vrpmid)
|
||||
except:
|
||||
return "no Item found"
|
||||
|
||||
# we find it and we return it
|
||||
schema = VRPMDV_MonitoringSchema()
|
||||
return schema.dumps(matched_obj)
|
||||
|
||||
def setMonitoring(self, vrpmid, request):
|
||||
try:
|
||||
matched_obj = next(x for x in self.mons if str(x.id) == vrpmid)
|
||||
matched_obj.name = request.name
|
||||
matched_obj.samplerate = request.samplerate
|
||||
matched_obj.sampleperiod = request.sampleperiod
|
||||
matched_obj.downtime = request.downtime
|
||||
self.saveFile()
|
||||
|
||||
except:
|
||||
return "no Item found"
|
||||
|
||||
|
||||
# we find it and we return it
|
||||
schema = VRPMDV_MonitoringSchema()
|
||||
return schema.dumps(matched_obj)
|
||||
|
||||
|
||||
|
||||
def createMonitoring(self, request):
|
||||
#mon = VRPMDV_Monitoring(request["name"], request["samplerate"], request["sampleperiod"], request["downtime"], request["owner"])
|
||||
id = uuid.uuid4()
|
||||
mon = VRPMDV_Monitoring(id, request.name, request.samplerate, request.sampleperiod, request.downtime, request.owner)
|
||||
|
||||
if not self.loaded :
|
||||
self.loaded = self.loadFile()
|
||||
# create monitoring
|
||||
self.mons.append(mon)
|
||||
#save to file
|
||||
self.saveFile()
|
||||
#create result Object in json
|
||||
schema = VRPMDV_MonitoringSchema()
|
||||
return schema.dumps(mon)
|
||||
|
||||
def deleteMonitoring(self, vrpmid):
|
||||
if not self.loaded :
|
||||
self.loaded = self.loadFile()
|
||||
|
||||
# find monitoring with uuid
|
||||
#result = filter(lambda mon: str(mon.uuid) == vrpmid["uuid"], self.mons)
|
||||
try:
|
||||
matched_obj = next(x for x in self.mons if str(x.id) == vrpmid)
|
||||
except:
|
||||
return "no Item found"
|
||||
|
||||
# we find it and now remove from list
|
||||
self.mons.remove(matched_obj)
|
||||
#save the list
|
||||
self.saveFile()
|
||||
#make result
|
||||
schema = VRPMDV_MonitoringSchema()
|
||||
return schema.dump(matched_obj)
|
||||
|
||||
|
||||
def startMonitoring(self, vrpmid):
|
||||
#if not self.loaded :
|
||||
# self.loaded = self.loadFile()
|
||||
#call the start API of the kernel treiber
|
||||
|
||||
|
||||
return "started"
|
||||
|
||||
def stopMonitoring(self, vrpmid):
|
||||
#if not self.loaded :
|
||||
# self.loaded = self.loadFile()
|
||||
#call the start API of the kernel treiber
|
||||
|
||||
return "stopped"
|
||||
|
||||
|
||||
20
vrpmdvserver/vrpmdvmonitoring.py
Normal file
20
vrpmdvserver/vrpmdvmonitoring.py
Normal file
@@ -0,0 +1,20 @@
|
||||
import uuid
|
||||
import datetime as dt
|
||||
from marshmallow import Schema, fields, post_load
|
||||
|
||||
from vrpmdvmonreq import VRPMDV_MonReq
|
||||
|
||||
|
||||
# class VRPMDV_MonReq:
|
||||
# def __init__(self, name , samplerate, sampleperiod, downtime, owner) :
|
||||
# self.name = name
|
||||
# self.samplerate = samplerate
|
||||
# self.sampleperiod = sampleperiod
|
||||
# self.downtime = downtime
|
||||
# self.owner = owner
|
||||
|
||||
class VRPMDV_Monitoring(VRPMDV_MonReq):
|
||||
def __init__(self, id, name , samplerate, sampleperiod, downtime, owner="None", created_at=dt.datetime.now()) :
|
||||
self.id = id
|
||||
self.created_at = created_at
|
||||
super().__init__(name, samplerate, sampleperiod, downtime, owner)
|
||||
34
vrpmdvserver/vrpmdvmonitoringschema.py
Normal file
34
vrpmdvserver/vrpmdvmonitoringschema.py
Normal file
@@ -0,0 +1,34 @@
|
||||
import uuid
|
||||
import datetime as dt
|
||||
from marshmallow import Schema, fields, post_load, post_dump
|
||||
from vrpmdvmonitoring import VRPMDV_Monitoring
|
||||
|
||||
|
||||
|
||||
class VRPMDV_MonitoringSchema(Schema):
|
||||
#__envelope__ = {"single": None, "many": "monitorings"}
|
||||
id = fields.UUID()
|
||||
created_at = fields.DateTime("%m/%d/%Y, %H:%M")
|
||||
name = fields.String()
|
||||
samplerate = fields.Integer()
|
||||
sampleperiod = fields.Integer()
|
||||
downtime = fields.Integer()
|
||||
owner = fields.String()
|
||||
|
||||
# def get_envelope_key(self, many):
|
||||
# """Helper to get the envelope key."""
|
||||
# key = self.__envelope__["many"] if many else self.__envelope__["single"]
|
||||
# assert key is not None, "Envelope key undefined"
|
||||
# return key
|
||||
|
||||
# @post_dump(pass_many=True)
|
||||
# def wrap_with_envelope(self, data, many, **kwargs):
|
||||
# key = self.get_envelope_key(many)
|
||||
# return {key: data}
|
||||
|
||||
@post_load
|
||||
def make_vrpmdv_Monitoring(self, data, **kwargs):
|
||||
return VRPMDV_Monitoring(**data)
|
||||
|
||||
|
||||
|
||||
13
vrpmdvserver/vrpmdvmonreq.py
Normal file
13
vrpmdvserver/vrpmdvmonreq.py
Normal file
@@ -0,0 +1,13 @@
|
||||
import datetime as dt
|
||||
|
||||
|
||||
|
||||
class VRPMDV_MonReq:
|
||||
def __init__(self, name , samplerate, sampleperiod, downtime, owner) :
|
||||
self.name = name
|
||||
self.samplerate = samplerate
|
||||
self.sampleperiod = sampleperiod
|
||||
self.downtime = downtime
|
||||
self.owner = owner
|
||||
|
||||
|
||||
19
vrpmdvserver/vrpmdvmonreqschema.py
Normal file
19
vrpmdvserver/vrpmdvmonreqschema.py
Normal file
@@ -0,0 +1,19 @@
|
||||
import uuid
|
||||
import datetime as dt
|
||||
from marshmallow import Schema, fields, post_load
|
||||
from vrpmdvmonreq import VRPMDV_MonReq
|
||||
|
||||
|
||||
class VRPMDV_MonReqSchema(Schema):
|
||||
name = fields.String()
|
||||
samplerate = fields.Integer()
|
||||
sampleperiod = fields.Integer()
|
||||
downtime = fields.Integer()
|
||||
owner = fields.String()
|
||||
|
||||
@post_load
|
||||
def make_vrpmdv_MonitoringReq(self, data, **kwargs):
|
||||
return VRPMDV_MonReq(**data)
|
||||
|
||||
|
||||
|
||||
74
vrpmdvserver/vrpmdvserver.py
Normal file
74
vrpmdvserver/vrpmdvserver.py
Normal file
@@ -0,0 +1,74 @@
|
||||
# from vrpmdv-server/vrpmdv-main import application
|
||||
import sys
|
||||
import json
|
||||
from flask import Flask, request , send_from_directory , Response
|
||||
from flask_cors import CORS
|
||||
from vrpmdvdata import VRPMDV_Data
|
||||
from vrpmdvmonreqschema import VRPMDV_MonReqSchema
|
||||
|
||||
app = Flask(__name__, static_url_path='', static_folder='../vrpmdv-frontend/build')
|
||||
CORS(app) #comment this on deployment
|
||||
|
||||
vrpmdvdata = VRPMDV_Data()
|
||||
|
||||
|
||||
@app.route("/", defaults={'path':''})
|
||||
def serve(path):
|
||||
return send_from_directory(app.static_folder,'index.html')
|
||||
|
||||
@app.route('/vrpmdvapi/1_0/monitorings', methods=['GET'])
|
||||
def get_monitorings():
|
||||
data = vrpmdvdata.getMonitorings()
|
||||
resp = Response(data, status=200, mimetype='application/json')
|
||||
return resp
|
||||
|
||||
@app.route('/vrpmdvapi/1_0/monitorings/<id>', methods=['GET'])
|
||||
def get_monitoring(id):
|
||||
data = vrpmdvdata.getMonitoring(id)
|
||||
resp = Response(data, status=200, mimetype='application/json')
|
||||
return resp
|
||||
|
||||
@app.route('/vrpmdvapi/1_0/monitorings/<id>', methods=['PATCH'])
|
||||
def set_monitoring(id):
|
||||
vrpmreq = VRPMDV_MonReqSchema().load(request.get_json())
|
||||
data = vrpmdvdata.setMonitoring(id, vrpmreq)
|
||||
resp = Response(data, status=200, mimetype='application/json')
|
||||
return resp
|
||||
|
||||
|
||||
@app.route('/vrpmdvapi/1_0/monitorings', methods=['POST'])
|
||||
def create_monitoring():
|
||||
vrpmreq = VRPMDV_MonReqSchema().load(request.get_json())
|
||||
data = vrpmdvdata.createMonitoring(vrpmreq)
|
||||
resp = Response(data, status=200, mimetype='application/json')
|
||||
return resp
|
||||
|
||||
|
||||
@app.route('/vrpmdvapi/1_0/monitorings/<id>', methods=['DELETE'])
|
||||
def delete_monitoring(id):
|
||||
data = vrpmdvdata.deleteMonitoring(id)
|
||||
resp = Response(data, status=200, mimetype='application/json')
|
||||
return resp
|
||||
|
||||
|
||||
|
||||
@app.route('/vrpmdvapi/1_0/monitorings/start', methods=['PUT'])
|
||||
def start_monitoring():
|
||||
vrpmid = request.get_json()
|
||||
data = vrpmdvdata.startMonitoring(vrpmid)
|
||||
resp = Response(data, status=200, mimetype='application/json')
|
||||
return resp
|
||||
|
||||
@app.route('/vrpmdvapi/1_0/monitorings/stop', methods=['PUT'])
|
||||
def stop_monitoring():
|
||||
vrpmid = request.get_json()
|
||||
data = vrpmdvdata.stopMonitoring(vrpmid)
|
||||
resp = Response(data, status=200, mimetype='application/json')
|
||||
return resp
|
||||
|
||||
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
app.run()
|
||||
|
||||
Reference in New Issue
Block a user