2 """Migrate from sqlite to postgresql
8 from subprocess import check_call, call
10 logger = logging.getLogger('pgmigrate')
12 if not 'DJANGO_SETTINGS_MODULE' in os.environ:
13 os.environ['DJANGO_SETTINGS_MODULE'] = 'htsworkflow.settings.felcat'
16 from django.conf import settings
17 from django.core import management
19 def main(cmdline=None):
20 parser = make_parser()
21 args = parser.parse_args(cmdline)
28 logging.basicConfig(level=level)
31 # needed for django 1.7
36 move_app_data('contenttypes')
38 move_app_data('admin')
40 move_app_data('eland_config')
41 move_app_data('samples')
42 move_app_data('experiments')
43 move_app_data('bcmagic')
44 move_app_data('inventory')
45 move_app_data('labels')
48 parser = argparse.ArgumentParser()
49 parser.add_argument('-v', '--verbose', action='store_true',
50 help='turn on info messages level')
51 parser.add_argument('-d', '--debug', action='store_true',
52 help='turn on debug level messages')
56 check_call(['kinit', '-l', '10m',
57 '-k', '-t', '/var/htsworkflow/jumpgate.keytab',
58 'jumpgate@WOLDLAB.CALTECH.EDU'])
60 def recreate_database():
61 dbserver = settings.DATABASES['default']['HOST']
62 dbname = settings.DATABASES['default']['NAME']
63 dbuser = settings.DATABASES['default']['USER']
64 call(['dropdb', '-U', dbuser, '-h', dbserver, dbname])
65 check_call(['createdb', '-U', dbuser, '-h', dbserver, dbname])
66 management.call_command('migrate', noinput=True)
67 #management.call_command('syncdb', '--noinput', '--no-initial-data')
69 def move_app_data(appname):
71 tempdir = tempfile.mkdtemp(prefix='htsw-migrate-')
72 logger.info('migrate dir: %s', tempdir)
74 with tempfile.NamedTemporaryFile(prefix=appname+'-', suffix='.json', dir=tempdir) as f:
75 logger.info('tempfile: %s', f.name)
76 management.call_command('dumpdata', appname, database='fctracker', stdout=f)
78 dumpstat = os.stat(f.name)
79 if dumpstat.st_size > 5:
80 management.call_command('loaddata', f.name)
85 if __name__ == "__main__":