snapshoter: add recovery (generate past plots)
parent
c641eda6f6
commit
90f302e39e
|
|
@ -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)
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
from collections import namedtuple
|
from collections import namedtuple
|
||||||
from datetime import date, timedelta, datetime as dt
|
from datetime import date, timedelta, datetime as dt
|
||||||
|
import logging
|
||||||
import os
|
import os
|
||||||
import shutil
|
import shutil
|
||||||
import tempfile
|
import tempfile
|
||||||
|
|
@ -7,24 +8,24 @@ import tempfile
|
||||||
import fs
|
import fs
|
||||||
import requests
|
import requests
|
||||||
|
|
||||||
Day = namedtuple("Day", ["start", "end"])
|
log = logging
|
||||||
|
|
||||||
|
Day = namedtuple("Day", ["start", "end", "str"])
|
||||||
SSHConfig = namedtuple("SSHConfig", ["user", "password", "host", "port", "dir"])
|
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'
|
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():
|
def today(today=dt.today()):
|
||||||
today = dt.today()
|
|
||||||
t = today.timetuple()
|
t = today.timetuple()
|
||||||
delta = timedelta(hours=t.tm_hour, minutes=t.tm_min, seconds=t.tm_sec)
|
delta = timedelta(hours=t.tm_hour, minutes=t.tm_min, seconds=t.tm_sec)
|
||||||
start = today - delta
|
start = today - delta
|
||||||
end = start + timedelta(days=1)
|
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)
|
start = int(start.timestamp() * 1000)
|
||||||
end = int(end.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):
|
def download(url, target, **kwargs):
|
||||||
response = requests.get(url, stream=True, **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:
|
with fs.open_fs(url) as remote:
|
||||||
return fs.copy.copy_file("/", local_file, remote, filename)
|
return fs.copy.copy_file("/", local_file, remote, filename)
|
||||||
|
|
||||||
def _update(auth, ssh_config):
|
def _update(auth, ssh_config, day=today()):
|
||||||
day = today()
|
|
||||||
url = URL.format(start=day.start, to=day.end)
|
url = URL.format(start=day.start, to=day.end)
|
||||||
|
log.debug(url)
|
||||||
with tempfile.NamedTemporaryFile() as tmp:
|
with tempfile.NamedTemporaryFile() as tmp:
|
||||||
download(url, tmp.name, auth=auth)
|
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():
|
def auth_from_env():
|
||||||
return (os.getenv("USER"), os.getenv("PASSWORD"))
|
return (os.getenv("USER"), os.getenv("PASSWORD"))
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue