Browse Source

Restaura dump mysql no começo da migração de dados

pull/1916/head
Marcio Mazza 7 years ago
parent
commit
8da1438092
  1. 20
      sapl/legacy/migracao_dados.py
  2. 19
      sapl/legacy/scripts/migra_um_db.sh

20
sapl/legacy/migracao_dados.py

@ -1,4 +1,5 @@
import datetime
import os
import re
import traceback
from collections import OrderedDict, defaultdict, namedtuple
@ -27,6 +28,7 @@ from unipath import Path
from sapl.base.models import AppConfig as AppConf
from sapl.base.models import Autor, TipoAutor, cria_models_tipo_autor
from sapl.comissoes.models import Comissao, Composicao, Participacao
from sapl.legacy import scripts
from sapl.legacy.models import NormaJuridica as OldNormaJuridica
from sapl.legacy.models import TipoNumeracaoProtocolo
from sapl.materia.models import (AcompanhamentoMateria, MateriaLegislativa,
@ -785,7 +787,23 @@ def populate_renamed_fields(new, old):
setattr(new, field.name, value)
def roda_comando_shell(cmd):
res = os.system(cmd)
assert res == 0, 'O comando falhou: {}'.format(cmd)
def migrar_dados(interativo=True):
# restaura dump
arq_dump = Path(DIR_DADOS_MIGRACAO.child(
'dumps_mysql', '{}.sql'.format(NOME_BANCO_LEGADO)))
assert arq_dump.exists(), 'Dump do mysql faltando: {}'.format(arq_dump)
info('Restaurando dump mysql de [{}]'.format(arq_dump))
normaliza_dump_mysql = Path(scripts.__file__).parent.child(
'normaliza_dump_mysql.sh')
roda_comando_shell('{} {}'.format(normaliza_dump_mysql, arq_dump))
roda_comando_shell('mysql -uroot < {}'.format(arq_dump))
# executa ajustes pré-migração, se existirem
arq_ajustes_pre_migracao = DIR_DADOS_MIGRACAO.child(
'ajustes_pre_migracao', '{}.sql'.format(sigla_casa))
@ -1292,4 +1310,4 @@ def gravar_marco():
if 'master' not in REPO.heads or REPO.index.diff('HEAD'):
# se de fato existe mudança
REPO.index.commit('Grava marco')
REPO.git.execute('git tag marco'.split())
REPO.git.execute('git tag -f marco'.split())

19
sapl/legacy/scripts/migra_um_db.sh

@ -1,10 +1,7 @@
#!/bin/bash
# rodar esse script na raiz do projeto
if [ $# -ge 2 ]; then
# proteje pasta com dumps de alterações acidentais
# chmod -R -w ~/migracao_sapl/sapl_dumps
if [ $# -eq 1 ]; then
DIR_MIGRACAO=~/migracao_sapl
@ -20,23 +17,11 @@ if [ $# -ge 2 ]; then
echo "########################################" | tee -a $LOG
echo >> $LOG
if [ $3 ]; then
# se há senha do mysql
mysql -u$2 -p"$3" -N -s -e "DROP DATABASE IF EXISTS $1; CREATE DATABASE $1;"
mysql -u$2 -p"$3" < $DIR_MIGRACAO/dumps_mysql/$1.sql
else
# se não há senha do mysql
mysql -u$2 -N -s -e "DROP DATABASE IF EXISTS $1; CREATE DATABASE $1;"
mysql -u$2 < $DIR_MIGRACAO/dumps_mysql/$1.sql
fi;
echo "O banco legado foi restaurado" |& tee -a $LOG
echo >> $LOG
echo "--- MIGRACAO ---" | tee -a $LOG
echo >> $LOG
DATABASE_NAME=$1 ./manage.py migracao_25_31 --force --dados --settings sapl.legacy_migration_settings 2>&1 | tee -a $LOG
echo >> $LOG
else
echo "USO:"
echo " $0 <nome_database> <usuário mysql> [senha mysql]"
echo " $0 <nome_database>"
fi;

Loading…
Cancel
Save