chore: backup infrastructure configurations [skip ci]
This commit is contained in:
@@ -1,12 +1,17 @@
|
|||||||
{
|
{
|
||||||
|
"fitbit": {
|
||||||
|
"client_id": "22BQMP",
|
||||||
|
"client_secret": "280a9e3702af04f687a84862c3f6f6ac",
|
||||||
|
"access_token": "eyJhbGciOiJIUzI1NiJ9.eyJhdWQiOiIyMkJRTVAiLCJzdWIiOiIyRk5WTkYiLCJpc3MiOiJGaXRiaXQiLCJ0eXAiOiJhY2Nlc3NfdG9rZW4iLCJzY29wZXMiOiJyc29jIHJzZXQgcmFjdCBybG9jIHJ3ZWkgcmhyIHJwcm8gcm51dCByc2xlIiwiZXhwIjoxNzY1ODQ1NDMwLCJpYXQiOjE3NjU4MTY2MzB9.gnXhTC5SOdivgtrZdP0YTCJnpfkgYA3a_keWgU9aJOQ",
|
||||||
|
"refresh_token": "d2a0f7c14c4f330b0d902a699b78699ace30511faa6dd5be639763125e87b0df",
|
||||||
|
"token_file": "fitbit_token.json",
|
||||||
|
"redirect_uri": "http://localhost:8080/fitbit-callback"
|
||||||
|
},
|
||||||
"garmin": {
|
"garmin": {
|
||||||
"username": "stuart.stent@gmail.com",
|
"username": "stuart.stent@gmail.com",
|
||||||
"password": "Stainless7?Lisp?Strangle",
|
"password": "Stainless7?Lisp?Strangle",
|
||||||
"is_china": false,
|
"is_china": false,
|
||||||
"session_data_file": "garmin_session.json"
|
"session_data_file": "garmin_session"
|
||||||
},
|
|
||||||
"health_connect": {
|
|
||||||
"package_name": "androidx.health.connect.client"
|
|
||||||
},
|
},
|
||||||
"sync": {
|
"sync": {
|
||||||
"sync_interval_minutes": 60,
|
"sync_interval_minutes": 60,
|
||||||
@@ -14,15 +19,15 @@
|
|||||||
"max_retries": 3,
|
"max_retries": 3,
|
||||||
"read_only_mode": false
|
"read_only_mode": false
|
||||||
},
|
},
|
||||||
|
"consul": {
|
||||||
|
"host": "consul.service.dc1.consul",
|
||||||
|
"port": 8500,
|
||||||
|
"prefix": "fitbit-garmin-sync"
|
||||||
|
},
|
||||||
"database": {
|
"database": {
|
||||||
"path": "weight_sync.db"
|
"path": "weight_sync.db"
|
||||||
},
|
},
|
||||||
"fitbit": {
|
"health_connect": {
|
||||||
"client_id": "22BQMP",
|
"package_name": "androidx.health.connect.client"
|
||||||
"client_secret": "280a9e3702af04f687a84862c3f6f6ac",
|
|
||||||
"access_token": "eyJhbGciOiJIUzI1NiJ9.eyJhdWQiOiIyMkJRTVAiLCJzdWIiOiIyRk5WTkYiLCJpc3MiOiJGaXRiaXQiLCJ0eXAiOiJhY2Nlc3NfdG9rZW4iLCJzY29wZXMiOiJyc29jIHJzZXQgcmFjdCBybG9jIHJ3ZWkgcmhyIHJwcm8gcm51dCByc2xlIiwiZXhwIjoxNzY1NzQ5ODczLCJpYXQiOjE3NjU3MjEwNzN9.d8KqJuK7srtgfa38Ura1TyV2DQ1ImB4MMN81ebbg2bA",
|
|
||||||
"refresh_token": "fa132cacc175f660627effbc2915435f037e42cb3de9599284c7016d606d04f0",
|
|
||||||
"token_file": "fitbit_token.json",
|
|
||||||
"redirect_uri": "http://localhost:8080/fitbit-callback"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
{"sync_type": "weight_sync", "status": "success", "message": "Synced 2 records, 0 failed", "records_processed": 2, "timestamp": "2025-12-15T16:26:25.098857+00:00"}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
{"sync_type": "weight_sync", "status": "success", "message": "No records to sync", "records_processed": 0, "timestamp": "2025-12-15T16:32:30.903001+00:00"}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
{"sync_type": "weight_sync", "status": "success", "message": "No records to sync", "records_processed": 0, "timestamp": "2025-12-15T16:32:56.785111+00:00"}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
{"sync_type": "weight_sync", "status": "success", "message": "No records to sync", "records_processed": 0, "timestamp": "2025-12-15T16:37:10.745067+00:00"}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
{"sync_type": "weight_sync", "status": "success", "message": "No records to sync", "records_processed": 0, "timestamp": "2025-12-15T16:42:59.810840+00:00"}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
{"sync_type": "weight_sync", "status": "success", "message": "No records to sync", "records_processed": 0, "timestamp": "2025-12-15T16:43:00.209623+00:00"}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
{"sync_type": "weight_sync", "status": "success", "message": "No records to sync", "records_processed": 0, "timestamp": "2025-12-15T16:43:37.207373+00:00"}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
{"sync_type": "weight_sync", "status": "success", "message": "No records to sync", "records_processed": 0, "timestamp": "2025-12-15T16:43:37.991653+00:00"}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
{"sync_type": "weight_sync", "status": "success", "message": "No records to sync", "records_processed": 0, "timestamp": "2025-12-15T16:45:16.654959+00:00"}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
{"sync_type": "weight_sync", "status": "success", "message": "No records to sync", "records_processed": 0, "timestamp": "2025-12-15T16:47:05.682885+00:00"}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
{"sync_type": "weight_sync", "status": "success", "message": "No records to sync", "records_processed": 0, "timestamp": "2025-12-15T16:48:42.127302+00:00"}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
{"sync_type": "weight_sync", "status": "success", "message": "No records to sync", "records_processed": 0, "timestamp": "2025-12-15T16:49:33.284337+00:00"}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
{"sync_type": "weight_sync", "status": "success", "message": "No records to sync", "records_processed": 0, "timestamp": "2025-12-15T16:50:29.274371+00:00"}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
{"sync_type": "weight_sync", "status": "success", "message": "No records to sync", "records_processed": 0, "timestamp": "2025-12-15T16:50:49.149905+00:00"}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
{"sync_type": "weight_sync", "status": "success", "message": "No records to sync", "records_processed": 0, "timestamp": "2025-12-15T16:54:00.949235+00:00"}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
{"sync_type": "weight_sync", "status": "success", "message": "No records to sync", "records_processed": 0, "timestamp": "2025-12-15T17:02:05.743187+00:00"}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
{"sync_type": "weight_sync", "status": "success", "message": "No records to sync", "records_processed": 0, "timestamp": "2025-12-15T17:02:39.296017+00:00"}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
{"sync_type": "weight_sync", "status": "success", "message": "No records to sync", "records_processed": 0, "timestamp": "2025-12-15T17:03:39.226587+00:00"}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
{"sync_type": "weight_sync", "status": "success", "message": "No records to sync", "records_processed": 0, "timestamp": "2025-12-15T19:59:51.244859+00:00"}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
{"sync_type": "weight_sync", "status": "success", "message": "No records to sync", "records_processed": 0, "timestamp": "2025-12-15T20:00:02.834333+00:00"}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
{"sync_type": "weight_sync", "status": "success", "message": "No records to sync", "records_processed": 0, "timestamp": "2025-12-15T20:00:32.663902+00:00"}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
{"sync_type": "weight_sync", "status": "success", "message": "No records to sync", "records_processed": 0, "timestamp": "2025-12-15T20:00:54.581716+00:00"}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
{"sync_type": "weight_sync", "status": "success", "message": "No records to sync", "records_processed": 0, "timestamp": "2025-12-15T20:01:19.475002+00:00"}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
{"sync_type": "weight_sync", "status": "success", "message": "No records to sync", "records_processed": 0, "timestamp": "2025-12-15T20:01:46.669952+00:00"}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
{"sync_type": "weight_sync", "status": "success", "message": "No records to sync", "records_processed": 0, "timestamp": "2025-12-15T20:02:10.744442+00:00"}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
{"sync_type": "weight_sync", "status": "success", "message": "No records to sync", "records_processed": 0, "timestamp": "2025-12-15T20:02:19.475519+00:00"}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
{"sync_type": "weight_sync", "status": "success", "message": "No records to sync", "records_processed": 0, "timestamp": "2025-12-15T20:49:52.985282+00:00"}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
{"sync_type": "weight_sync", "status": "success", "message": "No records to sync", "records_processed": 0, "timestamp": "2025-12-15T20:53:38.885117+00:00"}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
{"sync_type": "weight_sync", "status": "success", "message": "No records to sync", "records_processed": 0, "timestamp": "2025-12-15T22:04:24.292157+00:00"}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
{"sync_type": "weight_sync", "status": "success", "message": "No records to sync", "records_processed": 0, "timestamp": "2025-12-15T22:05:02.409264+00:00"}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
{"sync_type": "weight_sync", "status": "success", "message": "No records to sync", "records_processed": 0, "timestamp": "2025-12-15T22:12:48.493746+00:00"}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
{"sync_type": "weight_sync", "status": "success", "message": "No records to sync", "records_processed": 0, "timestamp": "2025-12-16T00:38:50.078635+00:00"}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
{"sync_type": "weight_sync", "status": "success", "message": "No records to sync", "records_processed": 0, "timestamp": "2025-12-16T00:57:33.125643+00:00"}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
{"sync_type": "weight_sync", "status": "success", "message": "No records to sync", "records_processed": 0, "timestamp": "2025-12-16T01:00:45.410336+00:00"}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
{"sync_type": "weight_sync", "status": "success", "message": "No records to sync", "records_processed": 0, "timestamp": "2025-12-16T01:15:10.037342+00:00"}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
{"sync_type": "weight_sync", "status": "success", "message": "No records to sync", "records_processed": 0, "timestamp": "2025-12-16T01:17:33.731905+00:00"}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
{"sync_type": "weight_sync", "status": "success", "message": "No records to sync", "records_processed": 0, "timestamp": "2025-12-16T01:20:50.180582+00:00"}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
{"sync_type": "weight_sync", "status": "success", "message": "No records to sync", "records_processed": 0, "timestamp": "2025-12-16T01:24:16.784359+00:00"}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
{"timestamp": "2025-12-15T04:46:55+00:00", "weight_kg": 92.3966904, "source": "fitbit", "sync_id": "456b789a546dcdb0132103cd3cee88ed", "synced_to_garmin": true}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
{"timestamp": "2025-12-15T04:39:37+00:00", "weight_kg": 92.16989439999999, "source": "fitbit", "sync_id": "608a2bef7a79ecf77c8561fdfcda9168", "synced_to_garmin": true}
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"backup_timestamp": "2025-12-15T02:00:55.909969",
|
"backup_timestamp": "2025-12-16T02:01:12.714915",
|
||||||
"total_keys": 83,
|
"total_keys": 123,
|
||||||
"successful_backups": 78,
|
"successful_backups": 118,
|
||||||
"failed_backups": 5,
|
"failed_backups": 5,
|
||||||
"consul_address": "http://consul.service.dc1.consul:8500"
|
"consul_address": "http://consul.service.dc1.consul:8500"
|
||||||
}
|
}
|
||||||
@@ -1 +1 @@
|
|||||||
{"conn_url":"postgres://192.168.4.227:5432/postgres","api_url":"http://192.168.4.227:8008/patroni","state":"running","role":"replica","version":"4.0.4","xlog_location":613267585992,"replication_state":"streaming","timeline":248}
|
{"conn_url":"postgres://192.168.4.227:5432/postgres","api_url":"http://192.168.4.227:8008/patroni","state":"running","role":"replica","version":"4.0.4","xlog_location":614502355160,"replication_state":"streaming","timeline":248}
|
||||||
@@ -1 +1 @@
|
|||||||
{"conn_url":"postgres://192.168.4.228:5432/postgres","api_url":"http://192.168.4.228:8008/patroni","state":"running","role":"primary","version":"4.0.4","xlog_location":613267587488,"timeline":248}
|
{"conn_url":"postgres://192.168.4.228:5432/postgres","api_url":"http://192.168.4.228:8008/patroni","state":"running","role":"primary","version":"4.0.4","xlog_location":614502355160,"timeline":248}
|
||||||
@@ -1 +1 @@
|
|||||||
{"conn_url":"postgres://192.168.4.36:5432/postgres","api_url":"http://192.168.4.36:8008/patroni","state":"running","role":"replica","version":"4.0.4","xlog_location":613267803072,"replication_state":"streaming","timeline":248}
|
{"conn_url":"postgres://192.168.4.36:5432/postgres","api_url":"http://192.168.4.36:8008/patroni","state":"running","role":"replica","version":"4.0.4","xlog_location":614502353592,"replication_state":"streaming","timeline":248}
|
||||||
@@ -1 +1 @@
|
|||||||
{"optime":613267587488,"slots":{"pg_odroid7":613267587488,"pg_opti1":613267587488,"pg_odroid8":613267587488},"retain_slots":["pg_odroid7","pg_odroid8","pg_opti1"]}
|
{"optime":614502355160,"slots":{"pg_odroid7":614502355160,"pg_opti1":614502355160,"pg_odroid8":614502355160},"retain_slots":["pg_odroid7","pg_odroid8","pg_opti1"]}
|
||||||
@@ -1,3 +1,7 @@
|
|||||||
|
variable "container_version" {
|
||||||
|
default = "latest"
|
||||||
|
}
|
||||||
|
|
||||||
job "fitbit-garmin-sync" {
|
job "fitbit-garmin-sync" {
|
||||||
datacenters = ["dc1"]
|
datacenters = ["dc1"]
|
||||||
type = "service"
|
type = "service"
|
||||||
@@ -9,11 +13,15 @@ job "fitbit-garmin-sync" {
|
|||||||
driver = "docker"
|
driver = "docker"
|
||||||
|
|
||||||
config {
|
config {
|
||||||
image = "gitea.service.dc1.fbleagh.duckdns.org/sstent/fitbit_garmin_sync:latest"
|
image = "gitea.service.dc1.fbleagh.duckdns.org/sstent/fitbit_garmin_sync:${var.container_version}"
|
||||||
volumes = [
|
volumes = [
|
||||||
"/mnt/Public/configs/fitbit-garmin-sync:/app/data"
|
"/mnt/Public/configs/fitbit-garmin-sync:/app/data"
|
||||||
]
|
]
|
||||||
|
memory_hard_limit = 2048
|
||||||
}
|
}
|
||||||
|
env {
|
||||||
|
CONFIG_SOURCE = "consul"
|
||||||
|
}
|
||||||
|
|
||||||
# Sensible resource allocation for a lightweight Python script.
|
# Sensible resource allocation for a lightweight Python script.
|
||||||
resources {
|
resources {
|
||||||
|
|||||||
Reference in New Issue
Block a user