Migração SAPL 2.5 to 3.1
====
Passo a passo.
Criar uma VM com o Ubuntu 16.04, com espaço no mínimo 10 vezes superior ao tamanha do DocumentosSapl.fs;
Levar o backup do DocumentosSapl.fs, Data.fs e do mysql do servidor do SAPL antigo para a VM criada no passo anterior (1); (Roteiro para Backup e Restore)
Instalar o SAPL 2.5 (Roteiro de instalação do SAPL 2.5)
Restaurar o banco de dados (mysql) do SAPL 2.5 (Roteiro para Backup e Restore).
O nome do banco de dados a ser criado para a restauração é sapl_cm_car
Observe que o car na nomeclarura acima é o nome do município
Não tem necessidade de restaurar o DocumentosSapl.fs e Data.fs no Sapl 2.5.
Instalar o SAPL 3.1 (não precisa instalar o SAPL_frontend)
Iniciar o processo de migracão
Criar as pastas ~/migracao_sapl/
Criar as pastas ~/migracao_sapl/datafs
Criar as pastas ~/migracao_sapl/repos
Criar as pastas ~/migracao_sapl/logs
Criar as pastas ~/migracao_sapl/dumps_mysql (talves estes em amarelo não sejam necessários, pois criei para tentar resolver o passo 12)exit
Copiar os arquivos Data.fs e DocumentosSapl.fs para a pasta criada acima
Renomear o arquivo Data.fs para Data_cm_car.fs (onde car é abreviação de Carneirinho, segundo a tabela de timezones)
Renomear o arquivo DocumentosSapl.fs para DocumentosSapl_cm_car.fs (onde car é abreviação de Carneirinho, segundo a tabela de timezones)
Copiar o arquivo "tabela_timezones.yaml" para a pasta ~/migracao_sapl/
Editar o arquivo "tabela_timezones.yaml" e adicionar o município, seguindo o padrão dos municípios já adicionados;
Criar um arquivo chamado .env dentro de /var/interlegis/sapl/sapl/legacy, com o seguinte conteúdo:
DATABASE_URL_FONTE = mysql://root:123456@localhost:3306/sapl_cm_car
DATABASE_URL_DESTINO = postgresql://sapl:sapl@localhost:5432/sapl
Observe que na primeira linha root é o nome do usuário, 123456 é a senha e sapl_cm_car é o nome do banco de dados
Acesse a pasta /var/interlegis/sapl/sapl e edite o arquivo legacy_migration_settings.py e altere a linha DEBUG = True para DEBUG = False
Inicie o processo descrito em Migração de Dados do sapl 2.5 e faça até In [2]: migrar_dados()
Emperrou aqui ./manage.py shell --settings=sapl.legacy_migration_settings
In [1]: from sapl.legacy.migracao import migrar_dados
In [2]: migrar_dados()
Com esta mensagem
In [1]: from sapl.legacy.migracao import migrar_dados
---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
<ipython-input-1-446a6f25e323> in <module>
----> 1 from sapl.legacy.migracao import migrar_dados
/var/interlegis/sapl/sapl/legacy/migracao.py in <module>
6 from unipath import Path
7
----> 8 from sapl.legacy.migracao_dados import (REPO, TAG_MARCO, gravar_marco, info,
9 migrar_dados)
10 from sapl.legacy.migracao_documentos import migrar_documentos
/var/interlegis/sapl/sapl/legacy/migracao_dados.py in <module>
133
134
--> 135 field_renames, model_renames = get_renames()
136 legacy_app = apps.get_app_config('legacy')
137 models_novos_para_antigos = {
/var/interlegis/sapl/sapl/legacy/migracao_dados.py in get_renames()
118 continue
119 elif isinstance(renames, str):
--> 120 renames = includes[renames]
121 # detecta mudança de nome
122 match = MODEL_RENAME_PATTERN.match(model_name)
KeyError: '<AbstractOrador>'
Na outra VM acho que encontro a solução
Arquivos
Links
Instalação do SAPL
https://github.com/interlegis/sapl/blob/3.1.x/docs/instalacao31.rst
https://colab.interlegis.leg.br/wiki/SAPL31Docker
https://github.com/interlegis/sapl/wiki/Migra%C3%A7%C3%A3o-sapl-2.5-para-3.1
Comandos docker https://medium.com/dockerbr/principais-comandos-docker-f9b02e6944cd
https://colab.interlegis.leg.br/wiki/HOWTO-InstalarSAPL25Ubuntu
https://colab.interlegis.leg.br/wiki/HOWTO-SAPLBackup
https://github.com/interlegis/sapl
Anotações Varidadas
Instalar o pyhton-dev para resolver o problema da isntalacao do zope na mibracao dos usuarios
https://stackoverflow.com/questions/26053982/setup-script-exited-with-error-command-x86-64-linux-gnu-gcc-failed-with-exit
Esse erro
/persistent/cPersistence.o [108/9445]
In file included from persistent/cPersistence.h:18:0,
from persistent/cPersistence.c:19:
persistent/_compat.h:18:20: fatal error: Python.h: Arquivo ou diretório não encontrado
compilation terminated.
error: command 'x86_64-linux-gnu-gcc' failed with exit status 1
----------------------------------------
Command "/var/interlegis/.virtualenvs/p27sapl/bin/python2.7 -u -c "import setuptools, tokenize;__file__='/tmp/pip-install-6NqC_3/persistent/setu
p.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install -
-record /tmp/pip-record-rZa8pk/install-record.txt --single-version-externally-managed --compile --install-headers /var/interlegis/.virtualenvs/p
27sapl/include/site/python2.7/persistent" failed with error code 1 in /tmp/pip-install-6NqC_3/persistent/
#######################3
Instalar o Git annex
sudo apt-get install git-annex
http://git-annex.branchable.com/install/Ubuntu/
##########################
Pasta onde devem ficar o data fs
/home/administrador/migracao_sapl/datafs
##############################
Nomes do Data FS e DocumetosSapl.fs
Data_cm_can.fs
DocumentosSapl_cm_can.fs
Onde o CAN é a inicial do município citada no arquivos indice yaml
#########################
Ultimo erro!
No handlers could be found for logger "ZODB.Connection"
Traceback (most recent call last):
File "./exporta_zope.py", line 494, in <module>
dump_sapl(sigla)
File "./exporta_zope.py", line 475, in dump_sapl
_dump_sapl(data_fs_path, documentos_fs_path, destino, salvar, mtimes)
File "./exporta_zope.py", line 403, in _dump_sapl
docs = br(sapl['sapl_documentos'])
File "./exporta_zope.py", line 89, in br
return obj.__Broken_state__
File "/var/interlegis/.virtualenvs/p27sapl/local/lib/python2.7/site-packages/ZODB/Connection.py", line 800, in setstate
self._reader.setGhostState(obj, p)
File "/var/interlegis/.virtualenvs/p27sapl/local/lib/python2.7/site-packages/ZODB/serialize.py", line 622, in setGhostState
state = self.getState(pickle)
File "/var/interlegis/.virtualenvs/p27sapl/local/lib/python2.7/site-packages/ZODB/serialize.py", line 615, in getState
return unpickler.load()
File "/var/interlegis/.virtualenvs/p27sapl/local/lib/python2.7/site-packages/ZODB/serialize.py", line 491, in _persistent_load
return self.loaders[reference_type](self, *args)
File "/var/interlegis/.virtualenvs/p27sapl/local/lib/python2.7/site-packages/ZODB/serialize.py", line 568, in load_multi_oid
conn = self._conn.get_connection(database_name)
File "/var/interlegis/.virtualenvs/p27sapl/local/lib/python2.7/site-packages/ZODB/Connection.py", line 357, in get_connection
new_con = self._db.databases[database_name].open(
KeyError: 'main'
#####
Comando correto para esta parte é o debaixo
Com o virtualenv ativado e na pasta sapl/legacy/scripts/exporta_zope rode a exportação usando a função exporta_zope.dump_sapl com o caminho do Data.fs como parâmetro. A forma mais simples de fazer isso é rodar o script exporta_zope com o caminho do Data.fs como argumento. Por exemplo:
> ./exporta_zope.py caminho/para/Data.fs.old
./exporta_zope.py /home/administrador/migracao_sapl/Data_cm_can
#######
Erro DocumentosSapl.fs é o dono e grupo do arquivo? não era :-(
Este erro
File "./exporta_zope.py", line 494, in <module>
dump_sapl(sigla)
File "./exporta_zope.py", line 475, in dump_sapl
_dump_sapl(data_fs_path, documentos_fs_path, destino, salvar, mtimes)
File "./exporta_zope.py", line 403, in _dump_sapl
docs = br(sapl['sapl_documentos'])
File "./exporta_zope.py", line 89, in br
return obj.__Broken_state__
File "/var/interlegis/.virtualenvs/p27sapl/local/lib/python2.7/site-packages/ZODB/Connection.py", line 800, in setstate
self._reader.setGhostState(obj, p)
File "/var/interlegis/.virtualenvs/p27sapl/local/lib/python2.7/site-packages/ZODB/serialize.py", line 622, in setGhostState
state = self.getState(pickle)
File "/var/interlegis/.virtualenvs/p27sapl/local/lib/python2.7/site-packages/ZODB/serialize.py", line 615, in getState
return unpickler.load()
File "/var/interlegis/.virtualenvs/p27sapl/local/lib/python2.7/site-packages/ZODB/serialize.py", line 491, in _persistent_load
return self.loaders[reference_type](self, *args)
File "/var/interlegis/.virtualenvs/p27sapl/local/lib/python2.7/site-packages/ZODB/serialize.py", line 568, in load_multi_oid
conn = self._conn.get_connection(database_name)
File "/var/interlegis/.virtualenvs/p27sapl/local/lib/python2.7/site-packages/ZODB/Connection.py", line 357, in get_connection
new_con = self._db.databases[database_name].open(
KeyError: 'main'
Após muito testar, descobri que o erro estava relacionado ao Key erro value n que aparece quando se faz o pack do documetosSapl.fs, para corrigir isto removi dois arquivos estranhos ao sistema padrao de pastas. Depois da remoção o pack rodou e a migração teve continuidade.
##########################################