Compare commits
No commits in common. "c641eda6f6ad8450c80778a033a35a446e057a9b" and "98c0c75e4ecff0acbfde7984b2c409c9c5ce173e" have entirely different histories.
c641eda6f6
...
98c0c75e4e
|
|
@ -1,3 +0,0 @@
|
||||||
*.pyc
|
|
||||||
data/
|
|
||||||
env
|
|
||||||
|
|
@ -1,10 +0,0 @@
|
||||||
version: "3"
|
|
||||||
services:
|
|
||||||
test:
|
|
||||||
build: src
|
|
||||||
volumes:
|
|
||||||
- ./src/:/app
|
|
||||||
- ./data:/data
|
|
||||||
env_file: env
|
|
||||||
working_dir: /app
|
|
||||||
command: python3 scheduler.py
|
|
||||||
|
|
@ -1,8 +0,0 @@
|
||||||
USER=grafana_user
|
|
||||||
PASSWORD=grafana_password
|
|
||||||
|
|
||||||
SSH_USER=ssh_user
|
|
||||||
SSH_PASSWORD=ssh_pass
|
|
||||||
SSH_HOST=ssh_target
|
|
||||||
|
|
||||||
PYTHONUNBUFFERED=1
|
|
||||||
|
|
@ -1,7 +0,0 @@
|
||||||
FROM alpine:3.8
|
|
||||||
ADD ["requirements.txt", "/"]
|
|
||||||
RUN apk add --update --no-cache python3 libssl1.0 && \
|
|
||||||
apk add --no-cache --virtual .build-deps g++ python3-dev libffi-dev openssl-dev make && \
|
|
||||||
pip3 install --upgrade pip && \
|
|
||||||
pip3 install -r requirements.txt && \
|
|
||||||
apk del .build-deps
|
|
||||||
|
|
@ -1,3 +0,0 @@
|
||||||
requests
|
|
||||||
fs.sshfs
|
|
||||||
schedule
|
|
||||||
|
|
@ -1,22 +0,0 @@
|
||||||
import logging
|
|
||||||
import time
|
|
||||||
|
|
||||||
import schedule
|
|
||||||
|
|
||||||
import snapshot
|
|
||||||
|
|
||||||
log = logging
|
|
||||||
|
|
||||||
def setup(interval=10):
|
|
||||||
schedule.every(interval).minutes.do(snapshot.update)
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
interval = 1
|
|
||||||
sleep = (interval*60) / 10.0
|
|
||||||
setup(interval)
|
|
||||||
while True:
|
|
||||||
try:
|
|
||||||
time.sleep(sleep)
|
|
||||||
schedule.run_pending()
|
|
||||||
except Exception as e:
|
|
||||||
log.exception(e)
|
|
||||||
|
|
@ -1,62 +0,0 @@
|
||||||
from collections import namedtuple
|
|
||||||
from datetime import date, timedelta, datetime as dt
|
|
||||||
import os
|
|
||||||
import shutil
|
|
||||||
import tempfile
|
|
||||||
|
|
||||||
import fs
|
|
||||||
import requests
|
|
||||||
|
|
||||||
Day = namedtuple("Day", ["start", "end"])
|
|
||||||
SSHConfig = namedtuple("SSHConfig", ["user", "password", "host", "port", "dir"])
|
|
||||||
|
|
||||||
URL = 'http://192.168.2.30:3000/render/d-solo/j4171pFmk/in-vs-outdoor?orgId=1&panelId=2&from={start}&to={to}&width=1000&height=500&tz=Europe%2FBerlin'
|
|
||||||
|
|
||||||
def today_str():
|
|
||||||
return date.today().strftime("temp_%d.%m.%Y.png")
|
|
||||||
|
|
||||||
def today():
|
|
||||||
today = dt.today()
|
|
||||||
t = today.timetuple()
|
|
||||||
delta = timedelta(hours=t.tm_hour, minutes=t.tm_min, seconds=t.tm_sec)
|
|
||||||
start = today - delta
|
|
||||||
end = start + timedelta(days=1)
|
|
||||||
print(start, end)
|
|
||||||
start = int(start.timestamp() * 1000)
|
|
||||||
end = int(end.timestamp() * 1000)
|
|
||||||
return Day(start=start, end=end)
|
|
||||||
|
|
||||||
def download(url, target, **kwargs):
|
|
||||||
response = requests.get(url, stream=True, **kwargs)
|
|
||||||
response.raw.decode_content = True
|
|
||||||
with open(target, "wb") as out:
|
|
||||||
shutil.copyfileobj(response.raw, out)
|
|
||||||
|
|
||||||
def upload(local_file, filename, config):
|
|
||||||
url = f"ssh://{config.user}:{config.password}@{config.host}:{config.port}/{config.dir}"
|
|
||||||
with fs.open_fs(url) as remote:
|
|
||||||
return fs.copy.copy_file("/", local_file, remote, filename)
|
|
||||||
|
|
||||||
def _update(auth, ssh_config):
|
|
||||||
day = today()
|
|
||||||
url = URL.format(start=day.start, to=day.end)
|
|
||||||
with tempfile.NamedTemporaryFile() as tmp:
|
|
||||||
download(url, tmp.name, auth=auth)
|
|
||||||
upload(tmp.name, today_str(), ssh_config)
|
|
||||||
|
|
||||||
def auth_from_env():
|
|
||||||
return (os.getenv("USER"), os.getenv("PASSWORD"))
|
|
||||||
|
|
||||||
def ssh_from_env():
|
|
||||||
return SSHConfig(user=os.getenv("SSH_USER"), password=os.getenv("SSH_PASSWORD"), host=os.getenv("SSH_HOST"), port=os.getenv("SSH_PORT", 22), dir=os.getenv("SSH_DIR", "/"))
|
|
||||||
|
|
||||||
def update():
|
|
||||||
auth = auth_from_env()
|
|
||||||
config = ssh_from_env()
|
|
||||||
_update(auth, config)
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
update()
|
|
||||||
|
|
||||||
|
|
||||||
Loading…
Reference in New Issue