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