From 90f302e39e4d935030ad4125a50ea1a758d67849 Mon Sep 17 00:00:00 2001 From: agp8x Date: Thu, 2 Aug 2018 20:13:40 +0200 Subject: [PATCH] snapshoter: add recovery (generate past plots) --- snapshotter/src/recover.py | 19 +++++++++++++++++++ snapshotter/src/snapshot.py | 22 ++++++++++++---------- 2 files changed, 31 insertions(+), 10 deletions(-) create mode 100644 snapshotter/src/recover.py diff --git a/snapshotter/src/recover.py b/snapshotter/src/recover.py new file mode 100644 index 0000000..9d594cc --- /dev/null +++ b/snapshotter/src/recover.py @@ -0,0 +1,19 @@ +from datetime import date, timedelta, datetime as dt +import snapshot + +def update(start, end): + auth = snapshot.auth_from_env() + config = snapshot.ssh_from_env() + offset = timedelta(days=1) + while start <= end: + print(start) + day = snapshot.today(today=start) + print(day) + snapshot._update(auth, config, day=day) + start += offset + + +if __name__ == "__main__": + start = dt(2018, 8 , 1) + end = dt(2018, 8 , 1) + update(start, end) \ No newline at end of file diff --git a/snapshotter/src/snapshot.py b/snapshotter/src/snapshot.py index ec0f02c..3377c79 100644 --- a/snapshotter/src/snapshot.py +++ b/snapshotter/src/snapshot.py @@ -1,5 +1,6 @@ from collections import namedtuple from datetime import date, timedelta, datetime as dt +import logging import os import shutil import tempfile @@ -7,24 +8,24 @@ import tempfile import fs import requests -Day = namedtuple("Day", ["start", "end"]) +log = logging + +Day = namedtuple("Day", ["start", "end", "str"]) 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() +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) + log.debug(f"{start}, {end}") + name = start.strftime("temp_%d.%m.%Y.png") start = int(start.timestamp() * 1000) end = int(end.timestamp() * 1000) - return Day(start=start, end=end) + return Day(start=start, end=end, str=name) def download(url, target, **kwargs): response = requests.get(url, stream=True, **kwargs) @@ -37,12 +38,13 @@ def upload(local_file, filename, config): with fs.open_fs(url) as remote: return fs.copy.copy_file("/", local_file, remote, filename) -def _update(auth, ssh_config): - day = today() +def _update(auth, ssh_config, day=today()): url = URL.format(start=day.start, to=day.end) + log.debug(url) with tempfile.NamedTemporaryFile() as tmp: download(url, tmp.name, auth=auth) - upload(tmp.name, today_str(), ssh_config) + result = upload(tmp.name, day.str, ssh_config) + log.debug(f"{day.str}, {result}") def auth_from_env(): return (os.getenv("USER"), os.getenv("PASSWORD"))