|
1 | 1 | import subprocess |
2 | 2 | import os |
| 3 | +import sys |
3 | 4 | import json |
4 | 5 | import socket |
5 | 6 | import logging |
|
52 | 53 | BORG_PROMETHEUS_PUSHGATEWAY_PASSWORD_NAME = 'BORG_PROMETHEUS_PUSHGATEWAY_PASSWORD' |
53 | 54 | BORG_PROMETHEUS_PUSHGATEWAY_PASSWORD_DEFAULT = None |
54 | 55 |
|
| 56 | +BORG_PROMETHEUS_INITIAL_CHECKUP_ENABLED_NAME = 'BORG_PROMETHEUS_INITIAL_CHECKUP_ENABLED' |
| 57 | +BORG_PROMETHEUS_INITIAL_CHECKUP_ENABLED_DEFAULT = 'yes' |
| 58 | + |
55 | 59 |
|
56 | 60 | def get_or_default(name, default_value): |
57 | 61 | value = os.environ.get(name) |
@@ -120,6 +124,16 @@ def encryption_passphrase(): |
120 | 124 | return get_or_default(BORG_BACKUP_ENCRYPTION_PASSPHRASE, BORG_BACKUP_ENCRYPTION_PASSPHRASE_DEFAULT) |
121 | 125 |
|
122 | 126 |
|
| 127 | +def initial_checkup(): |
| 128 | + return "--initial-checkup" in sys.argv |
| 129 | + |
| 130 | + |
| 131 | +def initial_checkup_enabled(): |
| 132 | + return get_or_default( |
| 133 | + BORG_PROMETHEUS_INITIAL_CHECKUP_ENABLED_NAME, |
| 134 | + BORG_PROMETHEUS_INITIAL_CHECKUP_ENABLED_DEFAULT) == 'yes' |
| 135 | + |
| 136 | + |
123 | 137 | def call_in_borg_env(command): |
124 | 138 | if encryption_enabled(): |
125 | 139 | logging.info("call with BORG_PASSPHRASE set") |
@@ -276,20 +290,40 @@ def time_command(name, description, command, registry): |
276 | 290 | summary.observe(time_used) |
277 | 291 |
|
278 | 292 |
|
279 | | -if __name__ == "__main__": |
280 | | - logging.basicConfig(format='%(asctime)s %(message)s', level=logging.INFO) |
| 293 | +def run_backup(): |
281 | 294 | logging.info('triggered by cron') |
282 | 295 | if is_init_enabled(): |
283 | 296 | init_backup() |
284 | 297 | registry = CollectorRegistry() |
285 | 298 | i = Info('instance', 'Information about the borg backup container instance.', registry=registry) |
286 | 299 | i.info({'instance_name': instance_name()}) |
287 | | - |
288 | 300 | time_command('borg_create_backup_time', 'Seconds used to create the backup.', create_backup, registry) |
289 | 301 | time_command('borg_prune_backup_time', 'Seconds used to prune the backup.', prune_backup, registry) |
290 | 302 | time_command('borg_compact_backup_time', 'Seconds used to compact the backup.', compact_backup, registry) |
| 303 | + if is_push_enabled(): |
| 304 | + create_info(registry) |
| 305 | + push_to_gateway(pushgateway(), job=jobname(), registry=registry, handler=auth_handler) |
| 306 | + logging.info('done') |
| 307 | + |
291 | 308 |
|
| 309 | +def run_initial_checkup(): |
| 310 | + logging.info('running initial checkup') |
| 311 | + registry = CollectorRegistry() |
| 312 | + i = Info('instance', 'Information about the borg backup container instance.', registry=registry) |
| 313 | + i.info({'instance_name': instance_name()}) |
292 | 314 | if is_push_enabled(): |
293 | 315 | create_info(registry) |
294 | 316 | push_to_gateway(pushgateway(), job=jobname(), registry=registry, handler=auth_handler) |
295 | 317 | logging.info('done') |
| 318 | + |
| 319 | + |
| 320 | +if __name__ == "__main__": |
| 321 | + logging.basicConfig(format='%(asctime)s %(message)s', level=logging.INFO) |
| 322 | + if initial_checkup(): |
| 323 | + logging.info('Starting on for initial checkup') |
| 324 | + if initial_checkup_enabled(): |
| 325 | + run_initial_checkup() |
| 326 | + else: |
| 327 | + logging.info("Initial checkup disabled") |
| 328 | + else: |
| 329 | + run_backup() |
0 commit comments