add migration tool, needs more testing
This commit is contained in:
parent
54be4cd8d3
commit
9e2c0e26ca
47
misc/migrate_usage_db.py
Normal file
47
misc/migrate_usage_db.py
Normal file
|
@ -0,0 +1,47 @@
|
|||
"""Migrate the usage data from the old bundled Transit Relay database.
|
||||
|
||||
The magic-wormhole package used to include both servers (Rendezvous and
|
||||
Transit). "wormhole server" started both of these, and used the
|
||||
"relay.sqlite" database to store both immediate server state and long-term
|
||||
usage data.
|
||||
|
||||
These were split out to their own packages: version 0.11 omitted the Transit
|
||||
Relay in favor of the new "magic-wormhole-transit-relay" distribution.
|
||||
|
||||
This script reads the long-term Transit usage data from the pre-0.11
|
||||
wormhole-server relay.sqlite, and copies it into a new "usage.sqlite"
|
||||
database in the current directory.
|
||||
|
||||
It will refuse to touch an existing "usage.sqlite" file.
|
||||
|
||||
The resuting "usage.sqlite" should be passed into --usage-db=, e.g. "twist
|
||||
transitrelay --usage=.../PATH/TO/usage.sqlite".
|
||||
"""
|
||||
|
||||
from __future__ import unicode_literals, print_function
|
||||
import sys
|
||||
from wormhole_transit_relay.database import open_existing_db, create_db
|
||||
|
||||
source_fn = sys.argv[1]
|
||||
source_db = open_existing_db(source_fn)
|
||||
target_db = create_db("usage.sqlite")
|
||||
|
||||
num_rows = 0
|
||||
for row in source_db.execute("SELECT * FROM `transit_usage`"
|
||||
" ORDER BY `started`").fetchall():
|
||||
target_db.execute("INSERT INTO `usage`"
|
||||
" (`started`, `total_time`, `waiting_time`,"
|
||||
" `total_bytes`, `result`)"
|
||||
" VALUES(?,?,?,?,?)",
|
||||
(row["started"], row["total_time"], row["waiting_time"],
|
||||
row["total_bytes"], row["result"]))
|
||||
num_rows += 1
|
||||
target_db.execute("INSERT INTO `current`"
|
||||
" (`rebooted`, `updated`, `connected`, `waiting`,"
|
||||
" `incomplete_bytes`)"
|
||||
" VALUES(?,?,?,?,?)",
|
||||
(0, 0, 0, 0, 0))
|
||||
target_db.commit()
|
||||
|
||||
print("usage database migrated (%d rows) into 'usage.sqlite'" % num_rows)
|
||||
sys.exit(0)
|
Loading…
Reference in New Issue
Block a user