Puedes ejecutar simulaciones con la demostración web proporcionada o llamando directamente a la API de REST.
INPUT y OUTPUT
Los archivos de entrada y salida usan el bucket de Cloud Storage de la configuración de Terraform.
El directorio de entrada debe contener archivos metrics_config.zip y publisher_config.zip. Puedes definir la ruta de acceso según sea necesario.
El bucket para los resultados contiene un directorio simulations, que almacena cada
simulación por su ID. Cada directorio de simulación contiene una carpeta inputs con
los archivos de entrada copiados y una carpeta outputs. La carpeta outputs contiene
el informe de errores, el archivo logcat y los archivos generados del simulador.
Usa la demostración web
La plataforma incluye una aplicación web basada en Flutter con fines de demostración que te permite ver, crear y administrar simulaciones. Te recomendamos que crees tu propia interfaz de usuario adaptada a tus necesidades.
La app de demostración se implementa en App Engine y requiere que accedas con una
Cuenta de Google. Esto se protege con un ID de cliente de OAuth 2.0 configurado en
tu proyecto de Google Cloud. La cuenta que accedió debe tener permisos de IAM para
invocar las Cloud Functions implementadas. Consulta Autoriza el acceso con IAM
para obtener instrucciones sobre cómo otorgar los permisos necesarios a las cuentas de usuario, como
el rol de invocador de Cloud Functions (roles/cloudfunctions.invoker).
Flujo de trabajo del usuario
- Accede con tu Cuenta de Google, autenticada con el proceso de OAuth 2.0.
- Visualiza las simulaciones en la página principal, que enumera todas las simulaciones consultando la base de datos de Firestore, que contiene toda la información de ejecución.
- Navega a un formulario para programar una simulación nueva haciendo clic en el botón de acción + en la esquina inferior derecha. Debes proporcionar varios parámetros, como la ruta de acceso de entrada, el ID de compilación y el tipo de instancia. Para obtener más información, consulta Crea una simulación.
- Verifica el estado del monitor en las actualizaciones de la lista de simulaciones, que muestran el
estado de la simulación nueva, por ejemplo,
PENDING,RUNNING,COMPLETED. - Una vez que se complete una simulación, consulta los informes y artefactos generados. Los archivos de entrada, los informes de salida, los registros, Logcat y los informes de errores se almacenan en Cloud Storage.
- Opcional: Cancela una simulación programada o en ejecución.
Uso de la API
Para la automatización y la integración con otros sistemas, puedes usar la API de REST.
El marcador de posición CLOUD_FUNCTION_URL
que se usa en la sección Autenticación y en las definiciones de extremos hace referencia a la
URL base de la Cloud Function que se invoca. Puedes encontrar las URLs de las funciones en la
consola de Google Cloud, en la página Cloud Functions. La URL de cada función
se muestra en la pestaña Activador de su página Detalles de la función. Como alternativa,
puedes encontrar estas URLs en los resultados de Terraform que se imprimen después de ejecutar
un comando apply.
Autenticación
Todas las solicitudes a la API deben autenticarse con un token de identidad que demuestre la identidad del emisor. La identidad (cuenta de usuario o de servicio) debe tener permisos de invocador de Cloud Functions en la función de destino.
Invocación del usuario (local y CLI): Cuando invoques la API desde una máquina local o un entorno que no sea de Google Cloud, debes usar un token de identidad emitido por Google que se haya obtenido para una cuenta de usuario.
TOKEN=$(gcloud auth print-identity-token)Invocación de la cuenta de servicio (dentro de Google Cloud): Cuando invoques la API desde un recurso de Google Cloud (por ejemplo, una VM de Compute Engine, otra Cloud Function o un clúster de Kubernetes), usa la identidad de la cuenta de servicio adjunta del recurso. El token se debe recuperar del servidor de metadatos del recurso.
TOKEN=$(curl -s "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/identity?audience=CLOUD_FUNCTION_URL" -H "Metadata-Flavor: Google")
Incluye el token recuperado en el encabezado Authorization de tus solicitudes como un
token Bearer.
Extremos
Los extremos para el usuario de la pila de Cloud Telemetry Simulation te permiten crear y borrar simulaciones, o leer información de simulación de la base de datos.
Crea una simulación
Este endpoint crea una nueva solicitud de simulación y la programa para su ejecución.
- Endpoint:
POST https://CLOUD_FUNCTION_URL/simulation-orchestrator-receive-requests Cuerpo de la solicitud:
{ "build_id": "latest", "file_path": "inputs/my-test-case/", "instance_type": "n1-standard-8", "owner": "user@example.com", "max_simulation_time": 300, "max_report_count": 5 }build_id(string): Es la etiqueta de la imagen de Docker del agente que se usará, por ejemplo,latest.file_path(cadena): Es la ruta de acceso dentro del bucket de GCS a la carpeta que contienemetrics_config.zipypublisher_config.zip.instance_type(cadena): Es el tipo de máquina de Compute Engine. Este tipo debe admitir la virtualización anidada, como las seriesn1,n2ot2d. Para obtener más información, consulta la descripción general de la virtualización anidada.owner(cadena): Es el correo electrónico del usuario que inicia la simulación.max_simulation_time(número entero): Es el tiempo máximo en segundos que se ejecuta la simulación.max_report_count(número entero): Es la cantidad de informes de telemetría después de los cuales finaliza la simulación.
Respuesta correcta (200 OK):
{ "id": "sim-a1b2c3d4e5f6" }
Borra una simulación
Este extremo cancela una simulación pendiente o en ejecución, y borra sus recursos asociados.
- Endpoint:
POST https://CLOUD_FUNCTION_URL/simulation-orchestrator-delete-simulation - Encabezados:
Content-Type: application/json
Cuerpo de la solicitud:
{ "id": "sim-a1b2c3d4e5f6" }Respuesta correcta (200 OK): Es un mensaje de texto sin formato (
Request accepted and is being processed).
Lee los datos de la simulación
Para leer los datos de la simulación, puedes interactuar con la función simulation-reader.
Estos extremos usan el método GET para recuperar el historial, el estado y la configuración del sistema.
Enumera simulaciones
Recupera una lista paginada de simulaciones con compatibilidad para filtrar y ordenar.
- Endpoint:
GET https://CLOUD_FUNCTION_URL/simulation-reader/simulations Parámetros de consulta (todos opcionales):
status(cadena): Filtra por estado de la simulación (running,Simulation request received,cancelled,completedofailed).owner(cadena): Filtra por el correo electrónico del propietario.sort_by(string): Es el campo por el que se ordenará (received_at,status_updated_at,started_at). El valor predeterminado esreceived_at.sort_order(cadena): Es la dirección de ordenamiento,ascodesc. La configuración predeterminada esdesc.page_size(número entero): Es la cantidad de resultados por página. La configuración predeterminada es 20.page_token(cadena): Es el token para recuperar la siguiente página de resultados.
Ejemplo de solicitud:
curl -H "Authorization: Bearer $TOKEN" "https://CLOUD_FUNCTION_URL/simulation-reader/simulations?status=completed&owner=user@example.com&sort_by=status_updated_at"Respuesta correcta (200 OK):
- Devuelve un objeto JSON que contiene un array de simulaciones y un
next_page_tokenopcional.
{ "simulations": [ { "id": "1234-abcd", "owner": "some@email.com", "status": "completed", "status_updated_at": "2025-12-05T14:50:00.952Z", "received_at": "2025-12-05T14:46:43.106Z", "started_at": "2025-12-05T14:47:05.848Z", "ended_at": "0001-01-01T00:00:00Z", "instance_id": "sim-1234-abcd", "ip": "10.156.15.230", "build_id": "europe-west3-docker.pkg.dev/your-project/simulation/simulation-agent:latest", "instance_type": "n1-standard-8", "file_path": "gs://your-project-simulation_files/path/", "max_simulation_time": 60, "max_report_count": 1 }, { "id": "5678-efgh", "owner": "some@email.com", "status": "completed", "status_updated_at": "2025-11-07T14:49:54.25Z", "received_at": "2025-11-07T14:46:54.959Z", "started_at": "2025-11-07T14:47:13.714Z", "ended_at": "0001-01-01T00:00:00Z", "instance_id": "sim-5678-efgh", "ip": "10.156.15.221", "build_id": "europe-west3-docker.pkg.dev/your-project/simulation/simulation-agent:latest", "instance_type": "n1-standard-8", "file_path": "gs://your-project-simulation_files/path/", "max_simulation_time": 60, "max_report_count": 1 } ], "next_page_token": "M7bydGsAptLncj8SOCb1" }- Devuelve un objeto JSON que contiene un array de simulaciones y un
Obtener una simulación específica
Recupera los detalles completos de una simulación específica por su ID.
Extremo:
GET https://CLOUD_FUNCTION_URL/simulation-reader/simulations/[SIMULATION_ID]Respuesta correcta (200 OK): Devuelve un objeto JSON que contiene los detalles de la simulación solicitada.
{ "id": "1234-abcd", "owner": "some@email.com", "status": "completed", "status_updated_at": "2025-12-05T14:50:00.952Z", "received_at": "2025-12-05T14:46:43.106Z", "started_at": "2025-12-05T14:47:05.848Z", "ended_at": "0001-01-01T00:00:00Z", "instance_id": "sim-1234-abcd", "ip": "10.156.15.230", "build_id": "europe-west3-docker.pkg.dev/your-project/simulation/simulation-agent:latest", "instance_type": "n1-standard-8", "file_path": "gs://your-project-simulation_files/path/", "max_simulation_time": 60, "max_report_count": 1 }
Obtén métricas y configuración del sistema
Estos extremos proporcionan información sobre la carga y la configuración actuales de la infraestructura de simulación.
Obtener recuento de ejecuciones: Devuelve el recuento de simulaciones en ejecución.
Extremo:
GET https://CLOUD_FUNCTION_URL/simulation-reader/simulations/running/countRespuesta correcta (200 OK):
{ "count": 0 }
Obtener el máximo de VMs simultáneas: Devuelve la cantidad máxima configurada de VMs que se ejecutan de forma simultánea.
Extremo:
GET https://CLOUD_FUNCTION_URL/simulation-reader/config/max-running-vmsRespuesta correcta (200 OK):
{ "max_running_vms": 5 }