can update etcd with device id
This commit is contained in:
parent
3d90ed0708
commit
055eb5932a
|
@ -1,4 +1,4 @@
|
||||||
FROM python:3.9
|
FROM python:3.7
|
||||||
|
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
|
|
||||||
|
|
|
@ -19,6 +19,7 @@ services:
|
||||||
- sync1:sync
|
- sync1:sync
|
||||||
volumes:
|
volumes:
|
||||||
- sync1config:/config
|
- sync1config:/config
|
||||||
|
- etcd
|
||||||
networks:
|
networks:
|
||||||
- syncnet
|
- syncnet
|
||||||
|
|
||||||
|
@ -38,6 +39,7 @@ services:
|
||||||
build: .
|
build: .
|
||||||
links:
|
links:
|
||||||
- sync2:sync
|
- sync2:sync
|
||||||
|
- etcd
|
||||||
volumes:
|
volumes:
|
||||||
- sync2config:/config
|
- sync2config:/config
|
||||||
networks:
|
networks:
|
||||||
|
@ -57,7 +59,7 @@ services:
|
||||||
|
|
||||||
etcd:
|
etcd:
|
||||||
image: quay.io/coreos/etcd
|
image: quay.io/coreos/etcd
|
||||||
command: /usr/local/bin/etcd --data-dir=/etcd-data
|
command: /usr/local/bin/etcd --data-dir=/etcd-data --advertise-client-urls http://etcd:2379 --listen-client-urls=http://0.0.0.0:2379
|
||||||
volumes:
|
volumes:
|
||||||
- etcd-data:/etcd-data
|
- etcd-data:/etcd-data
|
||||||
networks:
|
networks:
|
||||||
|
|
|
@ -1,2 +1,3 @@
|
||||||
|
etcd3
|
||||||
retrying
|
retrying
|
||||||
requests
|
requests
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
from syncthing_monitor.config_xml import parse_api_key, set_listen_ip_to_any
|
from syncthing_monitor.config_xml import parse_api_key, set_listen_ip_to_any
|
||||||
|
from syncthing_monitor.etcd_cluster_info import append_device_id
|
||||||
from syncthing_monitor.syncthing_rest import get_device_id
|
from syncthing_monitor.syncthing_rest import get_device_id
|
||||||
|
|
||||||
|
|
||||||
def loop(gui_port="8384", host="sync"):
|
def loop(gui_port="8384", host="sync"):
|
||||||
|
|
||||||
api_key = parse_api_key()
|
api_key = parse_api_key()
|
||||||
print("Found API Key: {0}".format(api_key))
|
print("Found API Key: {0}".format(api_key))
|
||||||
|
|
||||||
|
@ -12,6 +12,8 @@ def loop(gui_port="8384", host="sync"):
|
||||||
device_id = get_device_id(host, gui_port, api_key)
|
device_id = get_device_id(host, gui_port, api_key)
|
||||||
print("Found Device ID: {0}".format(device_id))
|
print("Found Device ID: {0}".format(device_id))
|
||||||
|
|
||||||
|
append_device_id(device_id, 'etcd')
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
loop()
|
loop()
|
||||||
|
|
25
syncthing_monitor/etcd_cluster_info.py
Normal file
25
syncthing_monitor/etcd_cluster_info.py
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
import json
|
||||||
|
|
||||||
|
import etcd3 as etcd3
|
||||||
|
from retrying import retry
|
||||||
|
|
||||||
|
CLUSTER_INFO_KEY = '/syncthing_monitor/cluster_info'
|
||||||
|
|
||||||
|
|
||||||
|
@retry
|
||||||
|
def append_device_id(device_id, host, port=2379):
|
||||||
|
cluster_info = {'devices': []}
|
||||||
|
|
||||||
|
etcd = etcd3.client(host=host, port=port)
|
||||||
|
|
||||||
|
with etcd.lock('syncthing_monitor'):
|
||||||
|
raw_value = etcd.get(CLUSTER_INFO_KEY)[0]
|
||||||
|
|
||||||
|
if raw_value is not None:
|
||||||
|
cluster_info = json.loads(raw_value)
|
||||||
|
|
||||||
|
if not any(device_id in element for element in cluster_info['devices']):
|
||||||
|
cluster_info['devices'].append(device_id)
|
||||||
|
|
||||||
|
print("Updating etcd value for '{0}': {1}".format(CLUSTER_INFO_KEY, json.dumps(cluster_info)), flush=True)
|
||||||
|
etcd.put(CLUSTER_INFO_KEY, json.dumps(cluster_info))
|
Loading…
Reference in New Issue
Block a user