New Deploy for Demo

This commit is contained in:
mr
2026-04-13 16:35:42 +02:00
parent fdd8c6a50d
commit 34f10565c7
32 changed files with 3630 additions and 54 deletions

10
docker/demo/db-2/add.sh Executable file
View File

@@ -0,0 +1,10 @@
#!/bin/bash
# Load data into node 2's MongoDB (container: mongo2, port 27018)
MONGO_CONTAINER=${1:-mongo2}
docker cp ./datas $MONGO_CONTAINER:.
for i in $(ls ./datas); do
echo "ADD file $i in collection ${i/.json/}"
docker exec -it $MONGO_CONTAINER sh -c "mongoimport --jsonArray --db DC_myDC --collection ${i/.json/} --file ./datas/$i"
done

View File

@@ -0,0 +1,117 @@
[
{
"_id": "ee550005-ee55-4005-8005-eeeeeeeeeeee",
"abstractinstanciatedresource": {
"abstractresource": {
"type": "compute",
"abstractobject": {
"id": "ee550005-ee55-4005-8005-eeeeeeeeeeee",
"name": "Demo Peer2 Server",
"is_draft": false,
"creator_id": "b87318c9-f5f8-44bb-8d48-913f4ddd6c31",
"creation_date": "2021-09-30T14:00:00.000Z",
"update_date": "2026-04-10T00:00:00.000Z",
"updater_id": "b87318c9-f5f8-44bb-8d48-913f4ddd6c31",
"access_mode": 1
},
"logo": "http://localhost:8000/static/images/vm_logo.png",
"description": "High-density bare-metal server owned by opencloud-demo-2, hosted in a Tier-3 Paris data centre (PUE 1.3). 4 compute nodes, each: 2× AMD EPYC 9654 (2.4 GHz base, 3.7 GHz boost, 96 cores / 192 threads per socket, Zen 4, 5nm TSMC), 64 GB DDR5-4800 ECC registered, 2× NVIDIA RTX 4090 (24 GB GDDR6X, 16 384 CUDA cores, 512 4th-gen tensor cores). Total cluster: 768 CPU cores and 192 GB GPU VRAM across 4 nodes. Dedicated to containerised workloads requiring both high CPU parallelism (Redis, Nginx, Mosquitto pub/sub) and optional GPU acceleration (Stable Diffusion inference, large model fine-tuning). Exposed to partner peers via OpenCloud Federation manifest. Powered 100% by certified renewable (solar PPA). Annual CO₂: ~500 kg eqCO₂.",
"short_description": "Peer-2 bare-metal cluster — 4 nodes × dual EPYC 9654 + 2× RTX 4090, solar-powered",
"owners": [{"name": "opencloud-demo-2"}]
},
"instances": [{
"resourceinstance": {
"abstractobject": {"id": "ee550005-ee55-4005-8005-eeeeeeeeeeee", "name": "Demo Peer2 Server Paris", "is_draft": false, "access_mode": 0},
"location": {"latitude": 48.8566, "longitude": 2.3522},
"country": 250,
"partnerships": [{"namespace": "default", "peer_groups": {"*": ["*"]}}]
},
"security_level": "public",
"annual_co2_emissions": 500,
"power_sources": ["solaire"],
"cpus": {"AMD EPYC 9654": {"model": "AMD EPYC 9654", "frequency": 2.4, "cores": 96, "architecture": "x86"}},
"gpus": {"RTX 4090": {"cores": {"cuda": 16384, "tensor": 512}, "model": "RTX 4090", "memory": 24000}},
"nodes": [
{"name": "default", "quantity": 4, "ram": {"size": 65536}, "cpus": {"AMD EPYC 9654": 2}, "gpus": {"RTX 4090": 2}}
]
}]
},
"architecture": "x86",
"infrastructure": 0
},
{
"_id": "0bb77206-371a-428e-8ae3-ff11575071e2",
"abstractinstanciatedresource": {
"abstractresource": {
"type": "compute",
"abstractobject": {
"id": "0bb77206-371a-428e-8ae3-ff11575071e2",
"name": "VM Target 2",
"is_draft": false,
"creator_id": "b87318c9-f5f8-44bb-8d48-913f4ddd6c31",
"creation_date": "2021-09-30T14:00:00.000Z",
"update_date": "2021-09-30T14:00:00.000Z",
"updater_id": "b87318c9-f5f8-44bb-8d48-913f4ddd6c31",
"access_mode": 1
},
"logo": "http://localhost:8000/static/images/vm_logo.png",
"description": "x86_64 virtual machine (KVM) running on the opencloud-demo-2 (peer-2) Proxmox VE 8 hypervisor cluster at IP 172.16.0.181. Host hardware: Intel Core Ultra 9 285K (3.6 GHz, 32 cores Arrow Lake-S, Intel 3 process), 16 GB DDR5-6400 ECC. Exposed to peer-1 for cross-peer workflow scheduling via Admiralty multi-cluster federation. Handles CPU-bound steps that benefit from low-latency access to peer-2-hosted MinIO storage. Inter-peer data traffic encrypted in transit (mTLS). Power: 100% alternating-current reclaimed energy. Annual CO₂: ~1 000 kg eqCO₂.",
"short_description": "Peer-2 KVM VM — cross-peer execution target owned by opencloud-demo-2",
"owners": [{"name": "IRT Saint Exupery"}]
},
"instances": [{
"resourceinstance": {
"abstractobject": {"id": "0bb77206-371a-428e-8ae3-ff11575071e2", "name": "VM Proxmox Pierre 2", "is_draft": false, "access_mode": 0},
"location": {"latitude": 48.8566, "longitude": 2.3522},
"country": 250,
"partnerships": [{"namespace": "default", "peer_groups": {"*": ["*"]}}]
},
"security_level": "private",
"annual_co2_emissions": 1000,
"power_sources": ["Larmes d'alternant"],
"cpus": {"Intel Core Ultra 9 285K": {"model": "Intel Core Ultra 9 285K", "frequency": 3.6, "cores": 32, "architecture": "x86"}},
"nodes": [{"name": "default", "quantity": 1, "ram": {"size": 16384}, "cpus": {"Intel Core Ultra 9 285K": 1}}]
}]
},
"architecture": "x86",
"infrastructure": 0
},
{
"_id": "7b989e97-c3e7-49d2-a3a7-f959da4870b5",
"abstractinstanciatedresource": {
"abstractresource": {
"type": "compute",
"abstractobject": {
"id": "7b989e97-c3e7-49d2-a3a7-f959da4870b5",
"name": "Mundi datacenter",
"is_draft": false,
"creator_id": "c0cece97-7730-4c2a-8c20-a30944564106",
"creation_date": "2021-09-30T14:00:00.000Z",
"update_date": "2021-09-30T14:00:00.000Z",
"updater_id": "c0cece97-7730-4c2a-8c20-a30944564106",
"access_mode": 1
},
"logo": "http://localhost:8000/static/images/Mundi datacenter.png",
"description": "Toulouse-based GPU cluster operated by IRT Saint-Exupéry (opencloud-demo-1 / peer-1) under the Mundi Opencloud programme. Node spec: 1× Intel Core i7-14700KF (3.6 GHz, 20 cores), 16 GB DDR5-6000, 8× NVIDIA RTX 3090 FE (24 GB GDDR6X, 10 496 CUDA cores each). Shared with peer-2 for cross-peer workloads that benefit from GPU acceleration or proximity to peer-1 storage (/mnt/vol). Scheduling from peer-2 goes through the Admiralty federation layer; peer-2 has no direct SSH access. Power mix: ~60% solar / ~40% coal. Annual CO₂: ~1 000 kg eqCO₂.",
"short_description": "IRT Saint-Exupéry GPU cluster — shared with peer-2 via federation (peer-1 owned)",
"owners": [{"name": "IRT Saint Exupery"}]
},
"instances": [{
"resourceinstance": {
"abstractobject": {"id": "7b989e97-c3e7-49d2-a3a7-f959da4870b5", "name": "Mundi datacenter Toulouse", "is_draft": false, "access_mode": 0},
"location": {"latitude": 43.6047, "longitude": 1.4442},
"country": 250,
"partnerships": [{"namespace": "default", "peer_groups": {"*": ["*"]}}]
},
"security_level": "public",
"annual_co2_emissions": 1000,
"power_sources": ["solaire", "charbon"],
"cpus": {"Intel Core i7-14700KF": {"model": "Intel Core i7-14700KF", "frequency": 3.6, "cores": 20, "architecture": "x86"}},
"gpus": {"RTX 3090 FE": {"cores": {"cuda": 10496, "tensor": 328}, "model": "RTX 3090 FE", "memory": 24000}},
"nodes": [{"name": "default", "quantity": 1, "ram": {"size": 16384}, "cpus": {"Intel Core i7-14700KF": 1}, "gpus": {"RTX 3090 FE": 8}}]
}]
},
"architecture": "x86",
"infrastructure": 0
}
]

View File

@@ -0,0 +1,118 @@
[
{
"_id": "hh880008-hh88-4008-8008-hhhhhhhhhhhh",
"abstractinstanciatedresource": {
"abstractresource": {
"type": "data",
"abstractobject": {
"id": "hh880008-hh88-4008-8008-hhhhhhhhhhhh",
"name": "Web API Logs",
"is_draft": false,
"creator_id": "b87318c9-f5f8-44bb-8d48-913f4ddd6c31",
"creation_date": "2021-09-30T14:00:00.000Z",
"update_date": "2026-04-10T00:00:00.000Z",
"updater_id": "b87318c9-f5f8-44bb-8d48-913f4ddd6c31",
"access_mode": 1
},
"logo": "http://localhost:8000/static/images/alpine-logo.png",
"description": "Rolling HTTP access logs collected from the OpenCloud API gateway. Each line is a JSON record with timestamp, method, path, status code and latency. Used by monitoring workflows to detect anomalies.",
"short_description": "OpenCloud API gateway HTTP access logs",
"owners": [{"name": "opencloud-demo-2"}],
"source": "http://localhost:9000/logs/api.log"
},
"instances": [{
"source": "http://localhost:9000/logs/api.log",
"resourceinstance": {
"env": [{"attr": "source", "readonly": true}],
"abstractobject": {"id": "hh880008-hh88-4008-8008-hhhhhhhhhhhh", "name": "Web API Logs Paris", "is_draft": false, "access_mode": 0},
"origin": {"origin_type": 0, "origin_verified": false},
"location": {"latitude": 48.8566, "longitude": 2.3522},
"country": 250,
"partnerships": [{"namespace": "default", "peer_groups": {"*": ["*"]}}]
}
}]
},
"quality": "high",
"open_data": false,
"static": false,
"size": 1.2,
"example": "{\"ts\":\"2026-04-10T08:00:00Z\",\"method\":\"GET\",\"path\":\"/workflow\",\"status\":200,\"latency_ms\":45}"
},
{
"_id": "gg770007-gg77-4007-8007-gggggggggggg",
"abstractinstanciatedresource": {
"abstractresource": {
"type": "data",
"abstractobject": {
"id": "gg770007-gg77-4007-8007-gggggggggggg",
"name": "Traffic Camera Feed",
"is_draft": false,
"creator_id": "c0cece97-7730-4c2a-8c20-a30944564106",
"creation_date": "2021-09-30T14:00:00.000Z",
"update_date": "2026-04-10T00:00:00.000Z",
"updater_id": "c0cece97-7730-4c2a-8c20-a30944564106",
"access_mode": 1
},
"logo": "http://localhost:8000/static/images/alpine-logo.png",
"description": "Live JPEG snapshot from a road-side traffic surveillance camera. Updated every 5 seconds. Shared by peer-1 with peer-2.",
"short_description": "Road traffic camera snapshot feed (peer-1)",
"owners": [{"name": "IRT"}],
"source": "http://plates.openalpr.com/eu-001.jpg"
},
"instances": [{
"source": "http://plates.openalpr.com/eu-001.jpg",
"resourceinstance": {
"env": [{"attr": "source", "readonly": true}],
"abstractobject": {"id": "gg770007-gg77-4007-8007-gggggggggggg", "name": "Traffic Camera Feed Toulouse", "is_draft": false, "access_mode": 0},
"origin": {"origin_type": 0, "origin_verified": false},
"location": {"latitude": 43.6047, "longitude": 1.4442},
"country": 250,
"partnerships": [{"namespace": "default", "peer_groups": {"*": ["*"]}}]
}
}]
},
"quality": "medium",
"open_data": false,
"static": false,
"size": 0.25,
"example": "http://plates.openalpr.com/eu-001.jpg"
},
{
"_id": "d573dc63-4de0-4e29-8a4e-c15cbb3aed06",
"abstractinstanciatedresource": {
"abstractresource": {
"type": "data",
"abstractobject": {
"id": "d573dc63-4de0-4e29-8a4e-c15cbb3aed06",
"name": "Red Car",
"is_draft": false,
"creator_id": "c0cece97-7730-4c2a-8c20-a30944564106",
"creation_date": "2021-09-30T14:00:00.000Z",
"update_date": "2021-09-30T14:00:00.000Z",
"updater_id": "c0cece97-7730-4c2a-8c20-a30944564106",
"access_mode": 1
},
"logo": "https://images.wondershare.com/repairit/article/guide-on-jpeg-repair-online-01.png",
"description": "Sample JPEG image of a red car with a visible license plate. Shared by peer-1.",
"short_description": "Sample image of a red car with license plate",
"owners": [{"name": "OpenALPR"}]
},
"instances": [{
"source": "http://plates.openalpr.com/h786poj.jpg",
"resourceinstance": {
"env": [{"attr": "source", "readonly": true}],
"abstractobject": {"id": "d573dc63-4de0-4e29-8a4e-c15cbb3aed06", "name": "Red Car", "is_draft": false, "access_mode": 0},
"origin": {"origin_type": 0, "origin_verified": false},
"location": {"latitude": 43.6047, "longitude": 1.4442},
"country": 250,
"partnerships": [{"namespace": "default", "peer_groups": {"*": ["*"]}}]
}
}]
},
"quality": "low",
"open_data": false,
"static": true,
"size": 0.59,
"example": "http://plates.openalpr.com/h786poj.jpg"
}
]

View File

@@ -0,0 +1,68 @@
[
{
"_id": "b87318c9-f5f8-44bb-8d48-913f4ddd6c31",
"failed_execution": null,
"api_url": "http://localhost:9000",
"nats_address": "nats://nats:4222",
"stream_address": "/ip4/172.40.0.4/tcp/4004/p2p/12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN",
"wallet_address": "my-wallet",
"public_key": "MCowBQYDK2VwAyEA/ymOIb0sJ0qCWrf3mKz7ACCvsMXLog/EK533JfNXZTM=",
"peer_id": "12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN",
"relation": 1,
"abstractobject": {
"id": "b87318c9-f5f8-44bb-8d48-913f4ddd6c31",
"name": "opencloud-demo-2",
"is_draft": false,
"not_in_catalog": false,
"creation_date": {"$date": "2025-03-27T09:13:13.230Z"},
"update_date": {"$date": "2026-04-10T00:00:00.000Z"},
"access_mode": 0
},
"trust_score": 0,
"verify": false
},
{
"_id": "c0cece97-7730-4c2a-8c20-a30944564106",
"failed_execution": null,
"api_url": "http://localhost:8000",
"nats_address": "nats://nats:4222",
"stream_address": "/ip4/172.40.0.3/tcp/4003/p2p/12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw",
"wallet_address": "my-wallet",
"public_key": "MCowBQYDK2VwAyEAG95Ettl3jTi41HM8le1A9WDmOEq0ANEqpLF7zTZrfXA=",
"peer_id": "12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw",
"relation": 2,
"abstractobject": {
"id": "c0cece97-7730-4c2a-8c20-a30944564106",
"name": "opencloud-demo-1",
"is_draft": false,
"not_in_catalog": false,
"creation_date": {"$date": "2025-03-27T09:13:13.230Z"},
"update_date": {"$date": "2026-04-10T00:00:00.000Z"},
"access_mode": 0
},
"trust_score": 0,
"verify": false
},
{
"_id": "b97318c9-f5f8-44bb-8d48-913f4ddd6c31",
"failed_execution": null,
"api_url": "http://localhost:10000",
"nats_address": "nats://nats:4222",
"stream_address": "/ip4/172.40.0.45/tcp/4005/p2p/12D4KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN",
"wallet_address": "my-wallet",
"public_key": "MCowBQYDK2VwAyEA/ymOIb0sJ0qCWrf3mKz7ACCvsMXLog/EK533JfNXZTM=",
"peer_id": "12D4KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN",
"relation": 1,
"abstractobject": {
"id": "b97318c9-f5f8-44bb-8d48-913f4ddd6c31",
"name": "opencloud-demo-3",
"is_draft": false,
"not_in_catalog": false,
"creation_date": {"$date": "2025-03-27T09:13:13.230Z"},
"update_date": {"$date": "2026-04-10T00:00:00.000Z"},
"access_mode": 0
},
"trust_score": 0,
"verify": false
}
]

View File

@@ -0,0 +1,218 @@
[
{
"_id": "0d565c87-50ae-4a73-843d-f8b2d4047772",
"abstractinstanciatedresource": {
"abstractresource": {
"type": "processing",
"abstractobject": {
"id": "0d565c87-50ae-4a73-843d-f8b2d4047772",
"name": "CURL",
"is_draft": false,
"creator_id": "c0cece97-7730-4c2a-8c20-a30944564106",
"creation_date": "2021-09-30T14:00:00.000Z",
"update_date": "2021-09-30T14:00:00.000Z",
"updater_id": "c0cece97-7730-4c2a-8c20-a30944564106",
"access_mode": 1
},
"logo": "http://localhost:8000/static/images/curl-logo.png",
"description": "Official curl Docker image (curlimages/curl:8.5.0) published by the curl project. Implements HTTP/1.1, HTTP/2, HTTPS (TLS 1.3), FTP, SFTP, SCP and 25+ other protocols. Supports cookies, redirect chains, proxy authentication, rate limiting, resumable transfers and parallel downloads (-Z flag). Typical workflow use: first-stage ingestion step that pulls remote datasets — camera snapshots, API log files, GeoTIFF archives, JSON feeds — into a shared storage volume before downstream processing nodes consume them. Single static binary; 12 MB compressed Alpine-based image; no shell dependency.",
"short_description": "Official curl image — multi-protocol data fetcher for workflow ingestion stages",
"owners": [{"name": "IRT"}]
},
"instances": [{
"access": {"container": {"image": "curlimages/curl:8.5.0", "command": "curl"}},
"resourceinstance": {
"abstractobject": {"id": "0d565c87-50ae-4a73-843d-f8b2d4047772", "name": "CURL Paris", "is_draft": false, "access_mode": 0},
"origin": {"origin_type": 0, "origin_verified": false},
"location": {"latitude": 48.8566, "longitude": 2.3522},
"country": 250,
"partnerships": [{"namespace": "default", "peer_groups": {"*": ["*"]}}]
}
}]
},
"license": "MIT",
"infrastructure": 0,
"usage": {"scaling_model": "2"},
"open_source": true
},
{
"_id": "2ce0323f-a85d-4b8b-a783-5280f48d634a",
"abstractinstanciatedresource": {
"abstractresource": {
"type": "processing",
"abstractobject": {
"id": "2ce0323f-a85d-4b8b-a783-5280f48d634a",
"name": "alpine",
"is_draft": false,
"creator_id": "c0cece97-7730-4c2a-8c20-a30944564106",
"creation_date": "2021-09-30T14:00:00.000Z",
"update_date": "2021-09-30T14:00:00.000Z",
"updater_id": "c0cece97-7730-4c2a-8c20-a30944564106",
"access_mode": 1
},
"logo": "http://localhost:8000/static/images/alpine-logo.png",
"description": "Official Alpine Linux 3.18 Docker image (5.3 MB compressed). musl-libc + BusyBox base exposing: wget, curl, awk, sed, grep, tar, gzip, openssl, jq (via apk). Zero extraneous packages; deterministic sha256 digest per tag. Used in workflows as a lightweight sidecar for tasks that do not justify a heavier runtime: downloading camera frames via wget, renaming and archiving intermediary files, running one-shot POSIX shell scripts, performing pre-run health-check assertions, or post-processing step cleanup. Starts in under 80 ms; memory footprint < 4 MB at idle.",
"short_description": "Official Alpine 3.18 — minimal shell environment for scripting sidecars",
"owners": [{"name": "IRT"}]
},
"instances": [{
"access": {"container": {"image": "alpine:3.18", "command": "sh"}},
"resourceinstance": {
"abstractobject": {"id": "2ce0323f-a85d-4b8b-a783-5280f48d634a", "name": "alpine Paris", "is_draft": false, "access_mode": 0},
"origin": {"origin_type": 0, "origin_verified": false},
"location": {"latitude": 48.8566, "longitude": 2.3522},
"country": 250,
"partnerships": [{"namespace": "default", "peer_groups": {"*": ["*"]}}]
}
}]
},
"license": "MIT",
"infrastructure": 0,
"usage": {"scaling_model": "2"},
"open_source": true
},
{
"_id": "e518d7a4-426a-4900-94e5-300767b1bb31",
"abstractinstanciatedresource": {
"abstractresource": {
"type": "processing",
"abstractobject": {
"id": "e518d7a4-426a-4900-94e5-300767b1bb31",
"name": "Mosquitto server",
"is_draft": false,
"creator_id": "c0cece97-7730-4c2a-8c20-a30944564106",
"creation_date": "2021-09-30T14:00:00.000Z",
"update_date": "2021-09-30T14:00:00.000Z",
"updater_id": "c0cece97-7730-4c2a-8c20-a30944564106",
"access_mode": 1
},
"logo": "http://localhost:8000/static/images/mosquitto-logo.png",
"description": "Official Eclipse Mosquitto 2.0.18 Docker image — reference MQTT broker from the Eclipse Foundation. Implements MQTT v5.0, v3.1.1 and v3.1 over TCP (port 1883), WebSocket (port 9001), and optional TLS (port 8883) with X.509 mutual auth. Supports password-file authentication, ACL-based topic access control, QoS 0/1/2 delivery guarantees, persistent sessions, retained messages, shared subscriptions (MQTT 5) and bridge mode for multi-broker topologies. Used as the terminal publish step in the sensor-data-collector workflow: reads vehicle-metadata JSON produced by the upstream Python analysis stage from shared storage and fans it out to subscribed edge consumers on the sensors/camera/vehicle topic.",
"short_description": "Official Eclipse Mosquitto 2.0 — MQTT v5/v3 broker with QoS and ACL support",
"owners": [{"name": "IRT"}]
},
"instances": [{
"access": {"container": {"image": "eclipse-mosquitto:2.0.18", "command": "mosquitto"}},
"resourceinstance": {
"abstractobject": {"id": "e518d7a4-426a-4900-94e5-300767b1bb31", "name": "Mosquitto server Paris", "is_draft": false, "access_mode": 0},
"origin": {"origin_type": 0, "origin_verified": false},
"location": {"latitude": 48.8566, "longitude": 2.3522},
"country": 250,
"partnerships": [{"namespace": "default", "peer_groups": {"*": ["*"]}}]
}
}]
},
"license": "EPL-2.0",
"infrastructure": 0,
"usage": {"scaling_model": "2"},
"open_source": true
},
{
"_id": "aa110001-aa11-4001-8001-aaaaaaaaaaaa",
"abstractinstanciatedresource": {
"abstractresource": {
"type": "processing",
"abstractobject": {
"id": "aa110001-aa11-4001-8001-aaaaaaaaaaaa",
"name": "Python Data Processor",
"is_draft": false,
"creator_id": "c0cece97-7730-4c2a-8c20-a30944564106",
"creation_date": "2021-09-30T14:00:00.000Z",
"update_date": "2026-04-10T00:00:00.000Z",
"updater_id": "c0cece97-7730-4c2a-8c20-a30944564106",
"access_mode": 1
},
"logo": "http://localhost:8000/static/images/alpine-logo.png",
"description": "Official Python 3.11-slim Docker image (Debian Bookworm base, 45 MB compressed). Provides CPython 3.11 runtime with pip; scientific stack installable at launch: NumPy 1.26, Pillow 10, OpenCV-headless 4.9, scikit-learn 1.4, pandas 2.2, requests 2.31. Shared by peer-1 (opencloud-demo-1). In the sensor-data-collector workflow: receives a camera frame path via ALPINE_FRAME_FILE and storage mount via IRT_LOCAL_FILE_STORAGE_SOURCE, runs vehicle object detection with OpenCV contour detection + background subtraction, extracts bounding boxes and plate candidates, serialises results as vehicle_meta.json to shared storage for the downstream Mosquitto publish step.",
"short_description": "Official Python 3.11-slim — frame analysis and sensor data processing runtime (shared by peer-1)",
"owners": [{"name": "Python Software Foundation"}]
},
"instances": [{
"access": {"container": {"image": "python:3.11-slim", "command": "python"}},
"resourceinstance": {
"abstractobject": {"id": "aa110001-aa11-4001-8001-aaaaaaaaaaaa", "name": "Python Data Processor Paris", "is_draft": false, "access_mode": 0},
"origin": {"origin_type": 0, "origin_verified": false},
"location": {"latitude": 48.8566, "longitude": 2.3522},
"country": 250,
"partnerships": [{"namespace": "default", "peer_groups": {"*": ["*"]}}]
}
}]
},
"license": "PSF-2.0",
"infrastructure": 0,
"usage": {"scaling_model": "2"},
"open_source": true
},
{
"_id": "cc330003-cc33-4003-8003-cccccccccccc",
"abstractinstanciatedresource": {
"abstractresource": {
"type": "processing",
"abstractobject": {
"id": "cc330003-cc33-4003-8003-cccccccccccc",
"name": "Nginx Gateway",
"is_draft": false,
"creator_id": "b87318c9-f5f8-44bb-8d48-913f4ddd6c31",
"creation_date": "2021-09-30T14:00:00.000Z",
"update_date": "2026-04-10T00:00:00.000Z",
"updater_id": "b87318c9-f5f8-44bb-8d48-913f4ddd6c31",
"access_mode": 1
},
"logo": "http://localhost:8000/static/images/alpine-logo.png",
"description": "Official Nginx 1.25-alpine Docker image (9 MB compressed) — high-performance asynchronous HTTP/1.1 and HTTP/2 server and reverse proxy. Event-driven architecture handles 50 000+ concurrent connections per worker process. In the api-monitoring-stack workflow it acts as the terminal presentation layer: reads Redis-cached API status JSON objects from MinIO storage and serves them on port 80 as a structured HTTP endpoint consumed by the OpenCloud operator dashboard. Configuration injected via envsubst at container startup. Features: gzip compression (level 6), custom JSON access logging, CORS headers, configurable cache-control directives, graceful hot-reload via SIGHUP without dropping connections. Owned by opencloud-demo-2.",
"short_description": "Official Nginx 1.25-alpine — HTTP frontend and static result endpoint (peer-2)",
"owners": [{"name": "nginx"}]
},
"instances": [{
"access": {"container": {"image": "nginx:1.25-alpine", "command": "nginx"}},
"resourceinstance": {
"abstractobject": {"id": "cc330003-cc33-4003-8003-cccccccccccc", "name": "Nginx Gateway Paris", "is_draft": false, "access_mode": 0},
"origin": {"origin_type": 0, "origin_verified": false},
"location": {"latitude": 48.8566, "longitude": 2.3522},
"country": 250,
"partnerships": [{"namespace": "default", "peer_groups": {"*": ["*"]}}]
}
}]
},
"license": "BSD-2-Clause",
"infrastructure": 0,
"usage": {"scaling_model": "2"},
"open_source": true
},
{
"_id": "dd440004-dd44-4004-8004-dddddddddddd",
"abstractinstanciatedresource": {
"abstractresource": {
"type": "processing",
"abstractobject": {
"id": "dd440004-dd44-4004-8004-dddddddddddd",
"name": "Redis Cache",
"is_draft": false,
"creator_id": "b87318c9-f5f8-44bb-8d48-913f4ddd6c31",
"creation_date": "2021-09-30T14:00:00.000Z",
"update_date": "2026-04-10T00:00:00.000Z",
"updater_id": "b87318c9-f5f8-44bb-8d48-913f4ddd6c31",
"access_mode": 1
},
"logo": "http://localhost:8000/static/images/alpine-logo.png",
"description": "Official Redis 7-alpine Docker image (14 MB compressed) — in-memory key-value store with sub-millisecond read latency. Supports strings, hashes, lists, sorted sets and streams natively. In the api-monitoring-stack workflow, ingests structured API-status objects (status-code distribution per endpoint, p50/p95 latency percentiles) produced by the CURL fetch step, stores them under a configurable CACHE_KEY with a 300-second TTL (default) to decouple the slow log-fetching stage from the fast Nginx serving stage. Configured in ephemeral mode (--save '' --appendonly no) to eliminate disk I/O and maximise throughput. Pub/Sub channel api_status_updates can be subscribed to by external consumers for real-time event streaming. Owned by opencloud-demo-2.",
"short_description": "Official Redis 7-alpine — TTL-based API status cache with pub/sub support (peer-2)",
"owners": [{"name": "Redis Ltd"}]
},
"instances": [{
"access": {"container": {"image": "redis:7-alpine", "command": "redis-server"}},
"resourceinstance": {
"abstractobject": {"id": "dd440004-dd44-4004-8004-dddddddddddd", "name": "Redis Cache Paris", "is_draft": false, "access_mode": 0},
"origin": {"origin_type": 0, "origin_verified": false},
"location": {"latitude": 48.8566, "longitude": 2.3522},
"country": 250,
"partnerships": [{"namespace": "default", "peer_groups": {"*": ["*"]}}]
}
}]
},
"license": "BSD-3-Clause",
"infrastructure": 0,
"usage": {"scaling_model": "2"},
"open_source": true
}
]

View File

@@ -0,0 +1,84 @@
[
{
"_id": "ff660006-ff66-4006-8006-ffffffffffff",
"abstractinstanciatedresource": {
"abstractresource": {
"type": "storage",
"abstractobject": {
"id": "ff660006-ff66-4006-8006-ffffffffffff",
"name": "Peer2 MinIO Storage",
"is_draft": false,
"creator_id": "b87318c9-f5f8-44bb-8d48-913f4ddd6c31",
"creation_date": "2021-09-30T14:00:00.000Z",
"update_date": "2026-04-10T00:00:00.000Z",
"updater_id": "b87318c9-f5f8-44bb-8d48-913f4ddd6c31",
"access_mode": 1
},
"logo": "https://min.io/resources/img/logo/ORIGINAL/vertical/dark/minioVerticalLogo-Dark.png",
"description": "MinIO Community Edition S3-compatible object store hosted on opencloud-demo-2 infrastructure, Paris Tier-3 data centre. Mount point: /mnt/minio. Capacity: 1 TB, NVMe RAID-6 array (6 drives, 2 parity), sustained throughput read 500 MB/s / write 400 MB/s, random IOPS 350 k. AES-256 encryption at rest; TLS 1.3 for all S3 API calls; server-side object integrity checksums (SHA-256). Bucket lifecycle policies: /logs prefix auto-archived to Glacier-class tier after 30 days; /tmp prefix purged after 24 h. Accessible to partner peers via S3 presigned URLs (1 h TTL) issued within the OpenCloud Federation default namespace. MinIO Console on :9001 restricted to peer-2 operators. Acts as the primary sink for peer-2 workflows: CURL log dumps, Redis snapshot exports and Mosquitto payload archives.",
"short_description": "Peer-2 MinIO NVMe RAID-6 — 1 TB, 500/400 MB/s, AES-256, presigned S3 access",
"owners": [{"name": "opencloud-demo-2"}]
},
"instances": [{
"resourceinstance": {
"env": [{"attr": "source", "readonly": true}],
"abstractobject": {"id": "ff660006-ff66-4006-8006-ffffffffffff", "name": "Peer2 MinIO Storage Paris", "is_draft": false, "access_mode": 0},
"location": {"latitude": 48.8566, "longitude": 2.3522},
"country": 250,
"partnerships": [{"namespace": "default", "peer_groups": {"*": ["*"]}}]
},
"source": "/mnt/minio",
"local": true,
"security_level": "public",
"size": 1000,
"size_type": 0,
"encryption": true,
"redundancy": "RAID6",
"throughput": "r:500,w:400"
}]
},
"storage_type": 5,
"acronym": "DC_myDC"
},
{
"_id": "e726020a-b68e-4abc-ab36-c3640ea3f557",
"abstractinstanciatedresource": {
"abstractresource": {
"type": "storage",
"abstractobject": {
"id": "e726020a-b68e-4abc-ab36-c3640ea3f557",
"name": "IRT local file storage",
"is_draft": false,
"creator_id": "c0cece97-7730-4c2a-8c20-a30944564106",
"creation_date": "2021-09-30T14:00:00.000Z",
"update_date": "2021-09-30T14:00:00.000Z",
"updater_id": "c0cece97-7730-4c2a-8c20-a30944564106",
"access_mode": 1
},
"logo": "http://localhost:8000/static/images/IRT local file storage.png",
"description": "S3-compatible POSIX file storage deployed on peer-1 infrastructure (IRT Saint-Exupéry, Toulouse). Mount point: /mnt/vol. Capacity: 500 GB, SSD RAID-5S array (5 drives + 1 hot spare), sustained throughput read 300 MB/s / write 350 MB/s, IOPS peak 120 k random 4K. AES-256 encryption at rest; TLS 1.3 in transit. Exposed via MinIO S3 gateway: any peer holding a valid default-namespace credential can GET/PUT objects. Acts as the primary shared scratch space across all peer-1 workflows: CURL download outputs, ImageMagick processed intermediates, Python analysis results and ALPR JSON payloads all land here between pipeline stages. Auto-purge policy: objects older than 7 days under the /tmp prefix are deleted by a nightly cron.",
"short_description": "IRT RAID-5S SSD scratch store — 500 GB, 300/350 MB/s, AES-256, S3-compatible (peer-1)",
"owners": [{"name": "IRT"}]
},
"instances": [{
"resourceinstance": {
"env": [{"attr": "source", "readonly": true}],
"abstractobject": {"id": "e726020a-b68e-4abc-ab36-c3640ea3f557", "name": "IRT local file storage Toulouse", "is_draft": false, "access_mode": 0},
"location": {"latitude": 43.6047, "longitude": 1.4442},
"country": 250,
"partnerships": [{"namespace": "default", "peer_groups": {"*": ["*"]}}]
},
"source": "/mnt/vol",
"local": false,
"security_level": "public",
"size": 500,
"size_type": 0,
"encryption": true,
"redundancy": "RAID5S",
"throughput": "r:300,w:350"
}]
},
"storage_type": 5,
"acronym": "DC_myDC"
}
]