52 lines
1.4 KiB
Python
52 lines
1.4 KiB
Python
"""Трекер созданных инстансов — только те что породило приложение."""
|
|
import json
|
|
import os
|
|
import threading
|
|
|
|
_LOCK = threading.Lock()
|
|
_PATH = "/tmp/instances.json"
|
|
|
|
_INITIAL = {
|
|
"884356cf-5212-4395-b56b-27c58a5fc1fa": {"svcId": 1, "displayName": "autotest-1-first", "instanceUid": "884356cf-5212-4395-b56b-27c58a5fc1fa"},
|
|
"6528854d-a4ea-428c-9fa4-68e85fa9b3ac": {"svcId": 1, "displayName": "curl-test-144834", "instanceUid": "6528854d-a4ea-428c-9fa4-68e85fa9b3ac"},
|
|
"fdcb5887-39f7-4ef8-a9c0-d55e434a55ff": {"svcId": 1, "displayName": "curl-final-test", "instanceUid": "fdcb5887-39f7-4ef8-a9c0-d55e434a55ff"},
|
|
}
|
|
|
|
|
|
def _load():
|
|
try:
|
|
with open(_PATH) as f:
|
|
return json.load(f)
|
|
except (FileNotFoundError, json.JSONDecodeError):
|
|
data = dict(_INITIAL)
|
|
_save(data)
|
|
return data
|
|
|
|
|
|
def _save(data):
|
|
with open(_PATH, "w") as f:
|
|
json.dump(data, f, indent=2)
|
|
|
|
|
|
def add(instance_uid, svc_id, display_name):
|
|
with _LOCK:
|
|
data = _load()
|
|
data[instance_uid] = {
|
|
"svcId": svc_id,
|
|
"displayName": display_name,
|
|
"instanceUid": instance_uid,
|
|
}
|
|
_save(data)
|
|
|
|
|
|
def remove(instance_uid):
|
|
with _LOCK:
|
|
data = _load()
|
|
data.pop(instance_uid, None)
|
|
_save(data)
|
|
|
|
|
|
def list_all():
|
|
with _LOCK:
|
|
return list(_load().values())
|