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
|
#!/usr/bin/env python
# migrate.py
"""
Migrate CouchDB schema to Soledad 0.8.2 schema.
******************************************************************************
ATTENTION!
- This script does not backup your data for you. Make sure you have a backup
copy of your databases before running this script!
- Make sure you turn off any service that might be writing to the couch
database before running this script.
******************************************************************************
Run this script with the --help option to see command line options.
See the README.md file for more information.
"""
import datetime
import logging
import os
from argparse import ArgumentParser
from migrate_couch_schema import migrate
TARGET_VERSION = '0.8.2'
DEFAULT_COUCH_URL = 'http://127.0.0.1:5984'
#
# command line args and execution
#
def _configure_logger(log_file):
if not log_file:
fname, _ = os.path.basename(__file__).split('.')
timestr = datetime.datetime.now().strftime('%Y-%m-%d_%H:%M:%S')
filename = 'soledad_%s_%s_%s.log' \
% (TARGET_VERSION, fname, timestr)
dirname = os.path.join(
os.path.dirname(os.path.realpath(__file__)), 'log')
log_file = os.path.join(dirname, filename)
logging.basicConfig(
filename=log_file,
filemode='a',
format='%(asctime)s,%(msecs)d %(levelname)s %(message)s',
datefmt='%H:%M:%S',
level=logging.DEBUG)
def _parse_args():
parser = ArgumentParser()
parser.add_argument(
'--couch_url',
help='the url for the couch database',
default=DEFAULT_COUCH_URL)
parser.add_argument(
'--do-migrate',
help='actually perform the migration (otherwise '
'just print what would be done)',
action='store_true')
parser.add_argument(
'--log-file',
help='the log file to use')
return parser.parse_args()
if __name__ == '__main__':
args = _parse_args()
_configure_logger(args.log_file)
migrate(args, TARGET_VERSION)
|