Login Start

This commit is contained in:
JonatanRek committed 2023-08-07 09:42:01 +02:00
1 parent aa51255715
commit c8d0a6a35a
5 files changed
+80 -24

No files matched your search

+39 -5
View File
@@ -1,13 +1,46 @@
from dotenv import load_dotenv
from flask import Flask, render_template
from flask_apscheduler import APScheduler
from flask_login import LoginManager
import docker
from pprint import pprint
import time
import os
#DEBUG
from pprint import pprint
def calculate_cpu_percent(stats, status):
if (status != "running"):
return 0
cpu_count = len(stats["cpu_stats"]["cpu_usage"]["percpu_usage"])
cpu_percent = 0.0
cpu_delta = float(stats["cpu_stats"]["cpu_usage"]["total_usage"]) - \
float(stats["precpu_stats"]["cpu_usage"]["total_usage"])
system_delta = float(stats["cpu_stats"]["system_cpu_usage"]) - \
float(stats["precpu_stats"]["system_cpu_usage"])
if system_delta > 0.0:
cpu_percent = cpu_delta / system_delta * 100.0 * cpu_count
return round(cpu_percent, 2)
def calculate_ram_percent(stats, status):
if (status != "running"):
return 0
mem_used = stats["memory_stats"]["usage"] - stats["memory_stats"]["stats"]["cache"] + stats["memory_stats"]["stats"]["active_file"]
limit = stats['memory_stats']['limit']
return round(mem_used / limit * 100, 2)
client = docker.from_env()
#login_manager = LoginManager()
app = Flask(__name__)
scheduler = APScheduler()
load_dotenv()
#login_manager.init_app(app)
#https://flask-login.readthedocs.io/en/latest/
@app.route("/", methods=['GET'])
def index():
@@ -17,12 +50,13 @@ def index():
@app.route("/parts/modal/container/<container_id>", methods=['GET'])
def parts_container_modal(container_id):
container = client.containers.get(container_id)
stats = container.stats(stream=False)
#com.docker.extension.detailed-description
project = ''
if('com.docker.compose.project' in container.attrs['Config']['Labels']):
project = container.attrs['Config']['Labels']['com.docker.compose.project']
return render_template("container_modal.html", name=container.name, project=project, ports=container.attrs['NetworkSettings']['Ports'], status=container.status)
return render_template("container_modal.html", name=container.name, project=project, ports=container.attrs['NetworkSettings']['Ports'], status=container.status, CPU=calculate_cpu_percent(stats, container.status) ,RAM =calculate_ram_percent(stats, container.status) )
@app.route("/api/<container_id>/<action>", methods=['DELETE', 'POST'])
def api_stop_container(container_id, action):
@@ -50,4 +84,4 @@ def scheduleTasks():
if __name__ == '__main__':
#scheduler.add_job(id = 'scheduled_tasks', func=scheduleTasks, trigger="interval", seconds=3)
#scheduler.start()
app.run(host="0.0.0.0", port=99, debug=True)
app.run(host=os.getenv('IP'), port=os.getenv('port'), debug=True)