import hmac import json import os import random import socket import time import requests node = socket.gethostbyaddr(socket.gethostname())[0] def record_observations(observations): for dir in (".", os.environ["HOME"] + "/.config/ltsdb", "/etc/ltsdb"): try: with open(dir + "/config.json") as fh: client_config = json.load(fh) baseurl = client_config["server"] break except FileNotFoundError: pass while True: for obs in observations: timestamp = time.time() msg = (node + " " + str(timestamp)).encode("UTF-8") digest = hmac.new(client_config["key"].encode("UTF-8"), msg, "SHA256").hexdigest() obs["auth"] = { "node": node, "timestamp": timestamp, "hmac": digest, } r = requests.post(baseurl + "record", json=observations) print(r) if r.status_code == 200: return True elif r.status_code == 409: time.sleep(0.5 + random.random()) continue else: return False