monanadmin / monan

Repositório organizacional das atividades dos macro-grupos do MONAN - Model for Ocean-laNd-Atmosphere PredictioN
14 stars 10 forks source link

[GCC] PAD: EcFlow Estrutura Egeon #507

Closed joaomas closed 1 month ago

joaomas commented 1 month ago

:people_holding_hands: User Story

COMO (...) QUEREMOS (...) PARA (...)

:clipboard: Critérios de aceite de conclusão da Issue

:pencil: Detalhamento adicional da atividade

cd /eclogs ecflow_ui >> ecflowview.${USER}.logs&

- Este script já está criado na conta `monan@egeon`, dentro do diretório `${HOME}/bin` incluido no `PATH`.

## :comet: Impactos

NA

## :link: Dependências

NA

## :hammer_and_wrench: Solução

### Aceite 1:

- Repositório criado: https://github.com/monanadmin/MONAN-WorkFlow
- Team `monanadmin/developers` adicionado no repo.
- Branch criada para este desenvolvimento: https://github.com/monanadmin/MONAN-WorkFlow/tree/feature/workflow-507-QI

---------------------------------------------

### Aceite 2:

- ECFLOW inicializado na egeon com o número de porta padrão :  `port=3142`  (possibilidade de usar outro PIN futuramente, ideal utilizar port = PID, chave única.)
- Estrutura básica de diretórios com arquivos de funcionamento do ECFLOW:

ecflow/ # diretorio principal do ECFLOW eclogs/ # diretorio onde ficam os scripts que inicializam e matam o cliente ecflow, bem como os logs de toda atividade da suite. includes/ # diretorio onde ficam os arquivos de cabeçalho (head.h) e finalização (tail.h) dos scripts ecflow.


- Script `WorkFlow/ecflow/eclogs/start.ksh` que inicializa o ECF client:

!/bin/ksh

export ECF_PORT=3142

ecflow_server --port=3142 &


- Script `WorkFlow/ecflow/eclogs/stop.ksh` que inicializa o ECF client:

!/bin/ksh

export ECF_PORT=3142

ecflow_client --group="halt=yes; check_pt; terminate=yes"


- Script para facilitar a inicialização de uma suite: `inicializadef.ksh`, este script utilizo junto com minhas ferramentas gerais (diretório `${HOME}/bin` inserido no meu `PATH`, já inseri na conta monan@egeon) :

!/bin/ksh

if [ $# -ne 1 ] then echo "" echo "${0} [SUITE root name]" echo "" exit fi

suite=${1}

export ECF_PORT=3142

ecflow_client --load=${suite}.def ecflow_client --begin=${suite}

echo "${suite} inicializada." echo ""


- Script para facilitar a atualização da suite.def no servidor/cliente, esse procedimento é necessário sempre que houver alguma modificação no arquivo estrutural `.def` :  `atualizadef.ksh`

!/bin/ksh

if [ $# -ne 1 ] then echo "" echo "${0} [SUITE root name]" echo "" exit fi

suite=${1}

export ECF_PORT=3142

ecflow_client --delete /${suite} ecflow_client --load=${suite}.def ecflow_client --begin=${suite}

echo "${suite} atualizada." echo ""


---------------------------------------------

### Aceite 3:

 Estrutura base do ECFLOW criada no repo MONAN-Workflow:

- Arquivo que define a estrutura dos diretorios e tarefas a serem agendadas foi criada: `MONAN-WorkFlow/ecflow/MONAN.def` 

suite MONAN

edit ECF_HOME "/mnt/beegfs/carlos.souza/repo_Monan/i507-MONAN-WorkFlow/MONAN-WorkFlow/ecflow" edit ECF_HOST "egeon-login1.cptec.inpe.br" edit ECF_INCLUDE "/mnt/beegfs/carlos.souza/repo_Monan/i507-MONAN-WorkFlow/MONAN-WorkFlow/ecflow/includes" edit ECF_TRIES "1"

task First_test label Info "Mensagem..." cron 8:00

endsuite


- Um script bash foi criado para facilitar que o operador clone a versão correta dos scripts_CD-CT e no local correto: `MONAN-WorkFlow/ecflow/clone_scripts_CD-CT.bash`:

!/bin/bash

cd MONAN git clone https://github.com/monanadmin/scripts_CD-CT.git cd scripts_CD-CT git checkout tags/0.1.0 -b scriptsCD-CT_ecflow_v0.1.0


- Segue o script que complementa a suite criada `MONAN-WorkFlow/ecflow/MONAN.def`: 

`MONAN-WorkFlow/ecflow/MONAN/First_test.ecf`

%include

ecflow_client --label=Info "Inicio... "

echo "This is my first test." echo "" echo "Here I can use ECF environment variables, like this: %ECF_HOME%"

%include

file is served by ecflow-server


---------------------------------------------

### Aceite 4: TESTE básico

- Carregando módulo do ECFLOW no EGEON: `module load ecflow/5.8.4`
- Inicializando o cliente na minha conta:  

cd /eclogs start.ksh


- Inicializando a suite `MONAN.def` no servidor: 

cd cd / incializadef.ksh MONAN


- Inicializando a interface gráfica do ECFLow: `openecview.ksh`
- Configurando a interface gráfica para mostrar o meu cliente:  
![2024-05-14_14-29](https://github.com/monanadmin/monan/assets/89524306/ecc712e7-50f1-48cc-9ac7-83792f04a7bf)

![2024-05-14_14-29_1](https://github.com/monanadmin/monan/assets/89524306/af6a8e80-b26a-4ddf-8d18-73d1046d57c8)

- Suite pronta para uso no servidor ECFLOW:

![2024-05-14_14-27](https://github.com/monanadmin/monan/assets/89524306/b03e5aa0-6c30-419f-ad2e-073cb3698e00)

- Script `First_test.ecf` agendado para rodar todos os dias as 12:00hs:
![2024-05-14_14-33](https://github.com/monanadmin/monan/assets/89524306/a15eb2a0-02f5-4b02-8077-673d66b1d7c7)

- Executando a tarefa `First_test.ecf` forçada, modo manual: 
![2024-05-14_14-32](https://github.com/monanadmin/monan/assets/89524306/452fb418-fbda-4913-91ec-d8c9cd65ac50)

- Resultado do script `First_test.ecf` :

![2024-05-14_14-33](https://github.com/monanadmin/monan/assets/89524306/15d00f50-0ba2-45a7-986a-a40547fd901b)

## :rotating_light: Problemas encontrados

NA

## :white_check_mark: Conclusão

- Repositório MONAN-Workflow. criado com os arquivos básicos para funcinar em qualquer conta.
- ECFlow instalado na minha conta do EGEon para teste.
- Estrutura base do EcFlow foi criado na Egeon e versionado no repositório `https://github.com/monanadmin/MONAN-WorkFlow.git`
- Suite teste cliente ECF testado rodou um script com echo apenas para teste com a estrutura criada: sucesso!

## :spiral_calendar: Trabalhos Futuros

NA