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. ##########################################