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 datetime
import os
import re import re
import traceback import traceback
from collections import OrderedDict, defaultdict, namedtuple 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 AppConfig as AppConf
from sapl.base.models import Autor, TipoAutor, cria_models_tipo_autor from sapl.base.models import Autor, TipoAutor, cria_models_tipo_autor
from sapl.comissoes.models import Comissao, Composicao, Participacao 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 NormaJuridica as OldNormaJuridica
from sapl.legacy.models import TipoNumeracaoProtocolo from sapl.legacy.models import TipoNumeracaoProtocolo
from sapl.materia.models import (AcompanhamentoMateria, MateriaLegislativa, from sapl.materia.models import (AcompanhamentoMateria, MateriaLegislativa,
@ -785,7 +787,23 @@ def populate_renamed_fields(new, old):
setattr(new, field.name, value) 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): 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 # executa ajustes pré-migração, se existirem
arq_ajustes_pre_migracao = DIR_DADOS_MIGRACAO.child( arq_ajustes_pre_migracao = DIR_DADOS_MIGRACAO.child(
'ajustes_pre_migracao', '{}.sql'.format(sigla_casa)) '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'): if 'master' not in REPO.heads or REPO.index.diff('HEAD'):
# se de fato existe mudança # se de fato existe mudança
REPO.index.commit('Grava marco') 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 #!/bin/bash
# rodar esse script na raiz do projeto # rodar esse script na raiz do projeto
if [ $# -ge 2 ]; then if [ $# -eq 1 ]; then
# proteje pasta com dumps de alterações acidentais
# chmod -R -w ~/migracao_sapl/sapl_dumps
DIR_MIGRACAO=~/migracao_sapl DIR_MIGRACAO=~/migracao_sapl
@ -20,23 +17,11 @@ if [ $# -ge 2 ]; then
echo "########################################" | tee -a $LOG echo "########################################" | tee -a $LOG
echo >> $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 "--- MIGRACAO ---" | tee -a $LOG
echo >> $LOG echo >> $LOG
DATABASE_NAME=$1 ./manage.py migracao_25_31 --force --dados --settings sapl.legacy_migration_settings 2>&1 | tee -a $LOG DATABASE_NAME=$1 ./manage.py migracao_25_31 --force --dados --settings sapl.legacy_migration_settings 2>&1 | tee -a $LOG
echo >> $LOG echo >> $LOG
else else
echo "USO:" echo "USO:"
echo " $0 <nome_database> <usuário mysql> [senha mysql]" echo " $0 <nome_database>"
fi; fi;

Loading…
Cancel
Save