-
Notifications
You must be signed in to change notification settings - Fork 20
Expand file tree
/
Copy pathentrypoint.py
More file actions
101 lines (88 loc) · 3.93 KB
/
entrypoint.py
File metadata and controls
101 lines (88 loc) · 3.93 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
import os
import sys
from src.check_remote import check_index_age
from src.downloader import InsufficientSpaceError, parallel_update, sequential_update
from src.utils import config
from src.utils.logger import get_logger, setup_logging
from src.utils.notify import send_notification
from src.utils.sanitize import sanitize_url
from src.utils.validate_config import validate_config
logger = get_logger()
def main():
send_notification("Photon-Docker Initializing")
logger.debug("Entrypoint setup called")
logger.info("=== CONFIG VARIABLES ===")
logger.info(f"UPDATE_STRATEGY: {config.UPDATE_STRATEGY}")
logger.info(f"UPDATE_INTERVAL: {config.UPDATE_INTERVAL}")
logger.info(f"REGION: {config.REGION}")
logger.info(f"FORCE_UPDATE: {config.FORCE_UPDATE}")
logger.info(f"DOWNLOAD_MAX_RETRIES: {config.DOWNLOAD_MAX_RETRIES}")
logger.info(f"FILE_URL (sanitized): {sanitize_url(config.FILE_URL)}")
logger.info(f"MD5_URL (sanitized): {sanitize_url(config.MD5_URL)}")
logger.info(f"PHOTON_PARAMS: {config.PHOTON_PARAMS}")
logger.info(f"ENABLE_METRICS: {config.ENABLE_METRICS}")
logger.info(f"JAVA_PARAMS: {config.JAVA_PARAMS}")
logger.info(f"LOG_LEVEL: {config.LOG_LEVEL}")
logger.info(f"BASE_URL: {config.BASE_URL}")
logger.info(f"SKIP_MD5_CHECK: {config.SKIP_MD5_CHECK}")
logger.info(f"INITIAL_DOWNLOAD: {config.INITIAL_DOWNLOAD}")
logger.info(f"SKIP_SPACE_CHECK: {config.SKIP_SPACE_CHECK}")
if config.APPRISE_URLS:
logger.info("APPRISE_URLS: REDACTED")
else:
logger.info("APPRISE_URLS: UNSET")
logger.info(f"OPENSEARCH_TRANSPORT_ADDRESSES: {config.OPENSEARCH_TRANSPORT_ADDRESSES}")
logger.info(f"OPENSEARCH_CLUSTER: {config.OPENSEARCH_CLUSTER}")
logger.info("=== END CONFIG VARIABLES ===")
try:
validate_config()
except ValueError as e:
logger.error(f"Stopping due to invalid configuration.\n{e}")
sys.exit(1)
if config.MIN_INDEX_DATE:
logger.info(f"MIN_INDEX_DATE: {config.MIN_INDEX_DATE}")
if config.OPENSEARCH_TRANSPORT_ADDRESSES:
logger.info("External OpenSearch configured — skipping index download")
return
if config.FORCE_UPDATE:
logger.info("Starting forced update")
try:
if config.UPDATE_STRATEGY == "PARALLEL":
parallel_update()
else:
sequential_update()
except InsufficientSpaceError as e:
logger.error(f"Cannot proceed with force update: {e}")
send_notification(f"Photon-Docker force update failed: {e}")
sys.exit(75)
except Exception:
logger.error("Force update failed")
raise
elif not os.path.isdir(config.OS_NODE_DIR):
if not config.INITIAL_DOWNLOAD:
logger.warning("Initial download is disabled but no existing Photon index was found. ")
return
logger.info("Starting initial download using sequential strategy")
logger.info("Note: Initial download will use sequential strategy regardless of config setting")
try:
sequential_update()
except InsufficientSpaceError as e:
logger.error(f"Cannot proceed: {e}")
send_notification(f"Photon-Docker cannot start: {e}")
sys.exit(75)
else:
logger.info("Existing index found, skipping download")
if config.MIN_INDEX_DATE and check_index_age():
logger.info("Index is older than minimum required date, starting sequential update")
try:
sequential_update()
except InsufficientSpaceError as e:
logger.error(f"Cannot proceed with minimum date update: {e}")
send_notification(f"Photon-Docker minimum date update failed: {e}")
sys.exit(75)
except Exception:
logger.error("Minimum date update failed")
raise
if __name__ == "__main__":
setup_logging()
main()