1st Version

This commit is contained in:
2024-03-19 17:06:47 +01:00
commit d79d2aefee
1948 changed files with 361921 additions and 0 deletions

0
vrpmdvserver/__init__.py Normal file
View File

5
vrpmdvserver/__pycache__/.gitignore vendored Normal file
View 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
View 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"

View 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)

View 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)

View 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

View 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)

View 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()