6.2 KiB
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>>.
Generar EDA y catalogo
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>.csvsi 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.
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_SIDTWILIO_AUTH_TOKENTWILIO_WHATSAPP_FROMMY_WHATSAPP_TOsi no se pasa--to
Webhook Cloud Chat
python scripts/whatsapp_chatbot.py
Requiere:
TWILIO_AUTH_TOKENPUBLIC_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