Skip to content

🚀 Inicio Rápido

Esta sección presenta una guía para realizar la configuración y puesta en funcionamiento de Automate External Tms Loads para el desarrollo de forma local en tu computadora.

✅ Prerrequisitos

Antes de comenzar, asegúrate de tener lo siguiente instalado en tu sistema:

  • 🐍 Python 3.11
  • 📦 Pipenv: Una herramienta para gestionar las dependencias de proyectos de Python. Puedes instalarlo usando pip:

    pip install pipenv
    * 🐳 Docker: Puedes instalar Docker Desktop (Instrucciones de instalación) o solo el motor de Docker (Docker Engine). Para Ubuntu, puedes usar:
    sudo apt update
    sudo apt install docker.io
    sudo systemctl start docker
    sudo systemctl enable docker
    * kubectl: La herramienta de línea de comandos de Kubernetes, que será necesaria para conectarnos al servicio de Graph API, dado que es un servicio interno no expuesto públicamente a internet. * Instrucciones de instalación * Lens: Una aplicación de escritorio que permite gestionar tus clústeres de Kubernetes de forma cómoda y eficiente. Esta aplicación nos permitirá acceder al clúster donde se encuentra el servicio de Graph API. * Instrucciones de instalación

📁 1. Clonar el Repositorio

Primero, clona el repositorio del proyecto por medio de SSH desde GitHub:

git clone git@github.com:guanes/glt-bol-service.git
cd glt-bol-service

📦 2. Instalar Dependencias

Este proyecto utiliza Pipenv para gestionar sus dependencias. Para instalarlas, ejecuta el siguiente comando desde el directorio raíz del proyecto:

pipenv install

Esto creará un entorno virtual e instalará todos los paquetes necesarios especificados en el Pipfile.

Para activar el entorno virtual, ejecuta:

pipenv shell

💻 3. Configurar la conexión a Graph API

Con la instalación previa de kubectl, abre Lens y una terminal de comandos. Luego, ejecuta el siguiente comando en la terminal para verificar el contexto actual de kubectl:

kubectl config current-context

Este comando te dirá el clúster al que estás conectado. El contexto para Automate External Tms Loads es charliebertvg. Si tu contexto actual no es el mismo, ejecuta el siguiente comando para cambiarlo:

gcloud container clusters get-credentials glt-cluster --zone us-central1-c --project charliebertvg

Después de establecer el contexto correcto, ve a Lens, donde debe aparecer el clúster gke_charliebertvg_us-central1-c_glt-cluster.

lens-cluster-pod-graph

En Lens, navega a Workloads > Pods y selecciona el namespace dev-assistant. Busca el pod cuyo nombre comience con graph-ltl-deploy, que corresponde al despliegue de Graph API. Copia el nombre completo del pod, ya que lo necesitarás para el siguiente paso.

Vuelve a la terminal y ejecuta el siguiente comando para establecer la conexión con Graph API:

kubectl port-forward -n dev-assistant [nombre_completo_del_pod_graph-ltl-deploy] 5050:8080 --address 0.0.0.0
Por ejemplo:
kubectl port-forward -n dev-assistant graph-ltl-deploy-58ff94c8dc-nz5md 5050:8080 --address 0.0.0.0

Deberías ver el siguiente mensaje, indicando que la conexión fue exitosa: Forwarding from 0.0.0.0:5050 -> 8080.

Nota: El nombre del pod puede cambiar. Si pierdes la conexión, verifica que el pod siga activo y que el nombre no haya cambiado. Si cambió, copia el nuevo nombre y vuelve a ejecutar el comando port-forward.

🚀 4. Ejecutar la Aplicación

La forma recomendada de ejecutar el proyecto localmente es utilizando Docker Compose, lo que permite iniciar la aplicación con un solo comando.

Antes de continuar, es necesario que solicites al líder del proyecto los archivos .env, cloud_key.json y launch.json, y los coloques en el directorio raíz del proyecto.

Una vez que tengas los archivos, ejecuta el siguiente comando en una nueva terminal (no en la que se está ejecutando el port-forward):

docker compose -f docker/docker-compose.yml -f docker/docker-compose.override.yml up --build

La ejecución del comando puede tardar varios minutos, ya que creará la imagen de Docker y levantará el contenedor. Al finalizar, si tienes Docker Desktop, puedes verificar visualmente que el contenedor se esté ejecutando correctamente.

docker-desktop

➡️ 5. Realizar una llamada a la API

La conexión con Graph API se utiliza para acceder a una cuenta de correo, obtener los correos electrónicos relevantes y descargar los archivos BOL adjuntos. Los correos se filtran por remitente (FROM) y asunto (SUBJECT).

Para probar el flujo localmente, debes realizar los siguientes pasos:

  1. Configurar el remitente: En el archivo docker/docker-compose.override.yml, modifica la variable de entorno MAIL_FILTER_FROM y establece tu propio correo electrónico de la organización.

  2. Enviar un correo de prueba: Desde la dirección de correo que configuraste en el paso anterior, envía un correo a charlieshared@goglt.com con el siguiente asunto: Booking dispatched - BOLXXXXX, donde XXXXX corresponde al número de 5 dígitos del BOL.

  3. Ejecutar el proceso: Una vez enviado el correo, puedes ir a la documentación Swagger de la API para realizar una petición. El único parámetro de entrada es una fecha y hora (start_date). Este valor debe ser unos minutos anterior al momento en que enviaste el correo, ya que la API buscará todos los mensajes que coincidan a partir de esa fecha y hora.

swagger-glt-bol