diff --git a/.woodpecker.yml b/.woodpecker.yml index 74c07dc..50108bd 100644 --- a/.woodpecker.yml +++ b/.woodpecker.yml @@ -13,12 +13,6 @@ steps: dockerfile: Dockerfile when: - event: [push, tag] - scan_image: - image: aquasec/trivy - commands: - - TRIVY_DISABLE_VEX_NOTICE=1 trivy image $FORGE_NAME/$CI_REPO:$CI_COMMIT_SHA --quiet --exit-code 1 - when: - - event: [push, tag] deploy: image: quay.io/wollud1969/k8s-admin-helper:0.2.1 environment: diff --git a/src/requirements.txt b/src/requirements.txt index 4c2aa82..73a8f35 100644 --- a/src/requirements.txt +++ b/src/requirements.txt @@ -1,3 +1,4 @@ +kaleido async-timeout==5.0.1 Authlib==1.4.0 blinker==1.9.0 diff --git a/src/run.py b/src/run.py index 447f66d..d998055 100644 --- a/src/run.py +++ b/src/run.py @@ -1,4 +1,4 @@ -from flask import Flask, session, g, render_template_string +from flask import Flask, session, g, render_template_string, Response from flask_session import Session from flask_oidc import OpenIDConnect from werkzeug.middleware.proxy_fix import ProxyFix @@ -7,6 +7,7 @@ import redis import json import os import plotly.express as px +import plotly.graph_objects as po import pandas as pd import psycopg import sqlalchemy @@ -148,6 +149,60 @@ def index(): dbh.close() +@app.route('/ntpserver') +def ntpserver(): + try: + dbh = psycopg.connect() + engine = sqlalchemy.create_engine("postgresql+psycopg://", creator=lambda: dbh) + + query = """ + select time_bucket('5 minutes', time) as bucket, + device, + avg(cast(values->'rootdisp'->>'value' as float)) as rootdisp, + avg(cast(values->'stratum'->>'value' as int)) as stratum + from measurements + where time >= date_trunc('day', now()) AND time < date_trunc('day', now()) + '1 day'::interval and + application = 'TSM' and attributes->>'Label' = 'david' + group by bucket, device + order by bucket, device + """ + + df = pd.read_sql(query, con=engine) + + fig = po.Figure() + fig.add_trace(po.Scatter(x=df['bucket'], y=df['rootdisp'], mode='lines', name='Root Dispersion', yaxis='y1', line=dict(color='red'))) + fig.add_trace(po.Scatter(x=df['bucket'], y=df['stratum'], mode='lines', name='Stratum', yaxis='y2', line=dict(color='blue'))) + + fig.update_layout( + # Linke Y-Achse + yaxis=dict( + title='Root Dispersion' + ), + + # Rechte Y-Achse + yaxis2=dict( + title='Stratum', + overlaying='y', # Legt die zweite Y-Achse über die erste + side='right', # Setzt sie auf die rechte Seite + tickmode='linear', # Stellt sicher, dass die Ticks in festen Intervallen sind + dtick=1, # Zeigt nur ganzzahlige Ticks + ), + + legend=dict(x=0.05, y=1) # Position der Legende + ) + + img = fig.to_image(format='png') + return Response(img, mimetype='image/png') + + except Exception as e: + raise Exception(f"Error when querying NTP server values: {e}") + finally: + if dbh is not None: + dbh.close() + + + + if __name__ == '__main__':