Files
Cloud-Conversion/docs/SCRIPTS.md
2026-06-02 16:46:19 +00:00

6.2 KiB

Scripts y Comandos

Los scripts CLI estan en scripts/ y son la ruta avanzada para automatizacion o troubleshooting. Ejecutalos desde la raiz del proyecto con el ambiente virtual activo.

Resumen

Script Objetivo Entrada principal Salida principal
scripts/aws_fetch_offer.py Descargar offer AWS EC2. Internet AWS Pricing. data/raw/aws/index.json.
scripts/aws_eda.py Transformar offer AWS y generar EDA. data/raw/aws/index.json. data/catalog/aws/aws_ec2_catalog.csv, data/eda/aws/aws_eda_*.md.
scripts/aws_match.py Recomendar shapes AWS por inventario. Inventario CSV/XLS/XLSX y catalogo AWS. data/match/aws/MATCH-AWS-*.csv.
scripts/oci_fetch_offer.py Descargar precios OCI y catalogo plano. API Oracle products. data/raw/oci/products.json, data/catalog/oci/oci_price_list.csv.
scripts/oci_match.py Generar BOM OCI agregada. Inventario CSV/XLS/XLSX y catalogo OCI. data/match/oci/MATCH-OCI-*.csv.
scripts/cloud-chat.py Consultar catalogo cloud por CLI. Pregunta natural y catalogo AWS. Respuesta en consola y log.
scripts/cloud_chat_runtime.py Adaptador importable para Cloud Chat. Variables de entorno. Respuesta segura para WhatsApp/Flask.
scripts/whatsapp_send.py Enviar mensaje WhatsApp por Twilio. .env y --body. Mensaje Twilio o dry-run.
scripts/whatsapp_chatbot.py Webhook Flask para WhatsApp Cloud Chat. Twilio webhook. TwiML sync o respuesta diferida.
scripts/whatsapp_logging.py Sanitizar logs WhatsApp. Eventos webhook. Log diario.
scripts/match_shared.py Utilidades comunes AWS/OCI. DataFrames e inventarios. Mapping, normalizacion y movimiento a done.
scripts/cloud_conversion_logging.py Logging comun. Prefijo y mensaje. logs/log_cloud_conversion_YYYYMMDD.txt.

Pipeline AWS

Descargar offer

python scripts/aws_fetch_offer.py

Descarga:

data/raw/aws/index.json

Efectos:

  • Crea directorio destino si no existe.
  • Escribe de forma atomica usando archivo temporal.
  • Registra mensajes con prefijo >> AWS_fetch_offer>>.
python scripts/aws_eda.py

Con rutas explicitas:

python scripts/aws_eda.py \
  --input data/raw/aws/index.json \
  --eda-output data/eda/aws/aws_eda_manual.md \
  --catalog-output data/catalog/aws/aws_ec2_catalog.csv

Salidas:

  • Catalogo plano AWS EC2.
  • Reporte Markdown EDA.

AWS Match

python scripts/aws_match.py --inventory input/inventario.xlsx --skip-llm

Parametros frecuentes:

Parametro Uso
--inventory Archivo CSV/XLS/XLSX de inventario.
--aws-catalog Catalogo AWS alterno.
--output CSV de salida.
--skip-llm Usa reglas deterministicas, sin Ollama.
--force-llm Fuerza mapeo por LLM.
--region-code Region AWS, default us-east-1.
--operating-system OS global opcional, por ejemplo Linux o Windows.
--include-previous-generation Incluye generaciones anteriores.
--include-unused-capacity Incluye capacidad distinta de Used.
--preferred-m-family Familia M preferida, default m7a.

Efectos:

  • Genera data/match/aws/MATCH-AWS-<inventario>.csv si no se pasa --output.
  • En CLI puede mover inventario exitoso a input/done/.
  • Registra mensajes con prefijo >> AWS_match>>.

Pipeline OCI

Descargar offer y catalogo OCI

python scripts/oci_fetch_offer.py

Salidas:

data/raw/oci/products.json
data/catalog/oci/oci_price_list.csv

Efectos:

  • Descarga productos desde API Oracle.
  • Aplana precios localizados a CSV.
  • Registra mensajes con prefijo >> OCI_fetch_offer>>.

OCI Match

python scripts/oci_match.py --inventory input/inventario.xlsx --skip-llm

Parametros frecuentes:

Parametro Uso
--inventory Archivo CSV/XLS/XLSX de inventario.
--oci-catalog Catalogo OCI alterno.
--output CSV de salida.
--skip-llm Usa reglas deterministicas, sin Ollama.
--force-llm Fuerza mapeo por LLM.
--compute-series Serie OCI Standard, default E.
--compute-generation Generacion fija, por ejemplo E6.
--hours-per-month Horas mensuales, default 730.
--no-move-to-done Evita archivar inventario al finalizar.

Efectos:

  • Genera data/match/oci/MATCH-OCI-<inventario>.csv.
  • En CLI mueve inventario exitoso a input/done/ salvo --no-move-to-done.
  • Registra mensajes con prefijo >> OCI_match>>.

Cloud Chat CLI

Modo interactivo:

python scripts/cloud-chat.py

Modo one-shot:

python scripts/cloud-chat.py --ask "Cuanto cuesta m7a.xlarge en virginia?"

Opciones:

python scripts/cloud-chat.py \
  --provider aws \
  --catalog data/catalog/aws/aws_ec2_catalog.csv \
  --model llama3.1:8b \
  --ask "Que shapes tienen 8 vCPU y al menos 16 GB?"

Defaults:

  • Provider: aws.
  • Catalogo: data/catalog/aws/aws_ec2_catalog.csv.
  • Modelo: llama3.1:8b.
  • Region default: us-east-1.
  • OS default: Linux.
  • Horas mensuales: 730.

WhatsApp

Envio

python scripts/whatsapp_send.py --body "Prueba Cloud Conversion" --dry-run

Envio real:

python scripts/whatsapp_send.py --to whatsapp:+52XXXXXXXXXX --body "Hola"

Requiere:

  • TWILIO_ACCOUNT_SID
  • TWILIO_AUTH_TOKEN
  • TWILIO_WHATSAPP_FROM
  • MY_WHATSAPP_TO si no se pasa --to

Webhook Cloud Chat

python scripts/whatsapp_chatbot.py

Requiere:

  • TWILIO_AUTH_TOKEN
  • PUBLIC_WEBHOOK_URL
  • Variables de Cloud Chat si quieres cambiar modelo/catalogo.

El webhook responde sincronamente si la respuesta llega dentro de WHATSAPP_SYNC_TIMEOUT_SECONDS. Si tarda mas, devuelve un acuse y manda respuesta diferida por Twilio.

Demos legacy

Archivo Estado
server.py Demo Flask simple que valida firma Twilio y responde eco. No es el webhook recomendado.
send.py Demo simple de envio WhatsApp con mensaje fijo. Usa scripts/whatsapp_send.py para operacion.

Validar argumentos

python scripts/aws_match.py --help
python scripts/oci_match.py --help
python scripts/aws_eda.py --help
python scripts/cloud-chat.py --help
python scripts/whatsapp_send.py --help