Update paths to dokku and docker
This commit is contained in:
12
app.py
12
app.py
@@ -6,6 +6,8 @@ from flask import Flask, jsonify, render_template
|
|||||||
|
|
||||||
app = Flask(__name__)
|
app = Flask(__name__)
|
||||||
|
|
||||||
|
DOKKU = "/usr/bin/dokku"
|
||||||
|
DOCKER = "/usr/bin/docker"
|
||||||
POLL_SECONDS = int(os.getenv("POLL_SECONDS", "10"))
|
POLL_SECONDS = int(os.getenv("POLL_SECONDS", "10"))
|
||||||
SHOW_CONTAINERS = os.getenv("SHOW_CONTAINERS", "0") == "1"
|
SHOW_CONTAINERS = os.getenv("SHOW_CONTAINERS", "0") == "1"
|
||||||
|
|
||||||
@@ -13,7 +15,7 @@ def sh(cmd: list[str]) -> str:
|
|||||||
return subprocess.check_output(cmd, stderr=subprocess.STDOUT, text=True).strip()
|
return subprocess.check_output(cmd, stderr=subprocess.STDOUT, text=True).strip()
|
||||||
|
|
||||||
def dokku_apps() -> list[str]:
|
def dokku_apps() -> list[str]:
|
||||||
out = sh(["dokku", "apps:list"])
|
out = sh([DOKKU, "apps:list"])
|
||||||
lines = [l.strip() for l in out.splitlines()]
|
lines = [l.strip() for l in out.splitlines()]
|
||||||
# Format:
|
# Format:
|
||||||
# =====> My Apps
|
# =====> My Apps
|
||||||
@@ -23,14 +25,14 @@ def dokku_apps() -> list[str]:
|
|||||||
|
|
||||||
def dokku_urls(app_name: str) -> list[str]:
|
def dokku_urls(app_name: str) -> list[str]:
|
||||||
try:
|
try:
|
||||||
out = sh(["dokku", "urls:report", app_name, "--urls"])
|
out = sh([DOKKU, "urls:report", app_name, "--urls"])
|
||||||
return [u.strip() for u in out.split() if u.strip()]
|
return [u.strip() for u in out.split() if u.strip()]
|
||||||
except Exception:
|
except Exception:
|
||||||
return []
|
return []
|
||||||
|
|
||||||
def dokku_ps_report(app_name: str) -> dict:
|
def dokku_ps_report(app_name: str) -> dict:
|
||||||
try:
|
try:
|
||||||
out = sh(["dokku", "ps:report", app_name])
|
out = sh([DOKKU, "ps:report", app_name])
|
||||||
# crude parse: "Key: value"
|
# crude parse: "Key: value"
|
||||||
data = {}
|
data = {}
|
||||||
for line in out.splitlines():
|
for line in out.splitlines():
|
||||||
@@ -46,7 +48,7 @@ def docker_stats() -> dict:
|
|||||||
Returns a mapping of container_name -> {cpu, mem_used, mem_limit, mem_pct}
|
Returns a mapping of container_name -> {cpu, mem_used, mem_limit, mem_pct}
|
||||||
"""
|
"""
|
||||||
fmt = "{{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}\t{{.MemPerc}}"
|
fmt = "{{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}\t{{.MemPerc}}"
|
||||||
out = sh(["docker", "stats", "--no-stream", "--format", fmt])
|
out = sh([DOCKER, "stats", "--no-stream", "--format", fmt])
|
||||||
stats = {}
|
stats = {}
|
||||||
for line in out.splitlines():
|
for line in out.splitlines():
|
||||||
name, cpu, mem_usage, mem_pct = line.split("\t")
|
name, cpu, mem_usage, mem_pct = line.split("\t")
|
||||||
@@ -62,7 +64,7 @@ def docker_stats() -> dict:
|
|||||||
|
|
||||||
def docker_ps() -> list[dict]:
|
def docker_ps() -> list[dict]:
|
||||||
fmt = "{{.Names}}\t{{.Image}}\t{{.Status}}\t{{.Ports}}"
|
fmt = "{{.Names}}\t{{.Image}}\t{{.Status}}\t{{.Ports}}"
|
||||||
out = sh(["docker", "ps", "--format", fmt])
|
out = sh([DOCKER, "ps", "--format", fmt])
|
||||||
rows = []
|
rows = []
|
||||||
for line in out.splitlines():
|
for line in out.splitlines():
|
||||||
name, image, status, ports = line.split("\t")
|
name, image, status, ports = line.split("\t")
|
||||||
|
|||||||
Reference in New Issue
Block a user