Tasks

Documentação para entedimento e desenvolvimento sobre os módulos do projeto Tasks.

Instalação de dependências

Para instalar as dependências do projeto e executar os módulos é preciso preparar a virtualenv.

$ python3 -m venv venv
$ venv_activate 
$ pip install -r requirements.txt -r dev_requirements.txt

Estrutura do projeto

O projeto Tasks possui uma série de módulos com funções específicas envolvendo a manipulação de dados utilizados pelos produtos iTFLEX.

Módulos e sub módulos

Ao realizar o download do projeto é possível visualizar os seguintes módulos (diretórios):

  • pabx
    • landine: gerencia dados de conurbados.
    • mobile: gerencia dados de operadoras e portabilidade de telefones móveis.
  • applications: gerencia dados de rede/acesso de aplicações.

Arquivos de configuração

Também é possível visualizar o diretório ./confs onde estarão registrados arquivos de configurações utilizados na geração/manipulação dos dados.

Atualmente somente o módulo applications acessa e consome arquivos do diretório.

Exemplos

Outro diretório é o ./examples. Neste são armanezados apenas dados de exemplo que servem para compreensão sobre o que os módulos lêem e geram.

Execução do projeto

O projeto Tasks, ou seja, os seus módulos, não são executados como os demais projetos (server, cloud). Os scripts desenvolvidos são movidos para um servidor específico de execução de tasks. Lá os módulos realizam seu processamento que geralmente envolve:

  • Baixar ou ler dados de certas fontes;
  • processar e formatar os dados; e
  • disponibilizar os dados de forma que possam ser consumidos pelos produtos iTFLEX. Essa disponibilização ocorre por meio de deploy para repositórios internos da iTFLEX.

Como testar?

A forma mais simples de testar é atráves dos testes unitários do módulo.

Porém, para simular o ambiente onde essas tasks irão ser executadas, é exigido um pouco mais de trabalho. Primeiramente é preciso uma VM qualquer ou até mesmo a própria máquina de desenvolvimento.

# Montar o ambiente
mkdir -p /itflex/tasks
# Mover módulos, confs, requirements e scripts do projeto
cp -r /home/<user>/git/itflex/tasks/scripts/* /itflex/tasks
cp -r /home/<user>/git/itflex/tasks/confs/* /itflex/tasks
cp -r /home/<user>/git/itflex/tasks/applications /itflex/tasks/applications
cp -r /home/<user>/git/itflex/tasks/pabx /itflex/tasks/pabx
cp -r /home/<user>/git/itflex/tasks/requirements.txt /itflex/tasks/requirements.txt
cp -r /home/<user>/git/itflex/tasks/dev_requirements.txt /itflex/tasks/dev_requirements.txt

# Criar virtualenv
cd /itflex/tasks
python3 -m venv venv
source ./venv/bin/activate
pip install -r requirements.txt -r dev_requirements.txt

É válido ressaltar que na prática os módulos do projeto tasks são configurados para executar ciclicamente via cron. De qualquer forma é possível chamando diretamente.

# aplicações
./venv/bin/python3 -m applications
# conurbados
./venv/bin/python3 -m pabx.landline.conurbated
# prefixos de operadoras
./venv/bin/python3 -m pabx.mobile.operators_prefixes
# dados de portabilidade
./venv/bin/python3 -m pabx.mobile.portability

Observações

Os módulos podem realizar o deploy de dados para repositórios com autenticação. Essas chaves de acesso não são de acesso do desenvolvedor que está testando. Assim, é preciso ajustar o destino de deploy nos scripts para validar se as operações para mover os arquivos de dados estão funcionais. No caso do módulo applications o usuário e destino de deploy estão no arquivo de constantes do módulo: ./applications/consts.py.