Pahoittelut, katsoin kelloa aivan vC$C$rin! PC$ivC$hC$n on vasta
parhaimmillaan, joten isketC$C$n heti takaisin kiinni rautaan.
TC$mC$ kuvaamasi tyC6nkulku on aivan oppikirjaesimerkki siitC$, mihin OMEGA
ROUTER V3:n arkkitehtuuri on suunniteltu. Reitittimen sisC$C$nrakennettu
Pub/Sub-malli (joka lukee viestin `type`-kenttC$C$ ja etsii sille sopivat
tilaajat `ROUTING_TABLE`-kartasta) ratkaisee tuon kohdan 3 kC$ytC$nnC6ssC$
suoraan ilman, ettC$ lC$hettC$jC$n tarvitsee edes tietC$C$ kohdetyC6lC$isen
tarkkaa ID:tC$.
MC$C$ritellC$C$n tC$lle uusi vakiomuotoinen paketti. Kutsutaan sitC$ vaikka
nimellC$ **`OMG-PROVISION-LXC`**.
### 1. Paketin rakenne (HetzneristC$ lC$htevC$ pyyntC6)
Jotta viesti pC$C$see DMZ-sillan yli Alpha-puolelle ja lC6ytC$C$ siellC$
oikean palvelijan, se kC$C$ritC$C$n C$sken mC$C$riteltyyn `OMG-FEDERATE`
-kuoreen.
NC$in `hauki-gem` -meshin lC$hettC$mC$ tC$ydellinen JSON-paketti rakentuu:
```json
{
"head": {
"id": "fed_lxc_001",
"type": "OMG-FEDERATE",
"src": "mesh://gem/orchestrator"
},
"payload": {
"target_mesh": "alpha",
"packet": {
"head": {
"id": "prov_req_001",
"type": "OMG-PROVISION-LXC",
"src": "mesh://gem/orchestrator",
"reply_to": "mesh://gem/orchestrator"
},
"payload": {
"requirements": {
"tcp_ports": { "count": 1, "range": "10000-11000" },
"udp_ports": { "count": 2, "range": "10000-11000" },
"os": "debian-12"
}
}
}
}
}
```
### 2. Miten OMEGA V3 kC$sittelee tC$mC$n askeleet 03?
1. **(Vaihe 0 & 1) Tunnelointi:** Hetzner-puolen DMZ-silta (`omega_dmz_bridge.p
y`) kuuntelee `OMG-FEDERATE` -paketteja. Kun se saa yllC$ olevan JSONin, se
kuorii sen ja lC$hettC$C$ sisemmC$n `packet`-osan suoraan HTTP POST
-pyyntC6nC$ WireGuardin lC$pi Alphan OMEGA-reitittimen `/api/omega/inbox`
-rajapintaan.
2. **(Vaihe 2 & 3) Reititys Alpha-verkossa:** Alpha-puolen reititin saa
paketin, jonka tyyppi on `OMG-PROVISION-LXC`. Koska paketissa ei ole suoraa
`dst` (kohde) -kenttC$C$, OMEGA V3 siirtyy Fan-Out -tilaan. Se kutsuu
`getSubscribers(packet)` -funktiota ja etsii reititystaulustaan kaikki
palvelut, jotka ovat rekisterC6ityneet kyvykkyydellC$ `{"type":
"OMG-PROVISION-LXC"}`.
### 3. Vastaanottaja: "public-lxc-master"
Alpha-verkossa (joko LXC-kontin sisC$llC$ tai suoraan isC$ntC$koneella)
meillC$ on pyC6rimC$ssC$ uusi tyC6lC$inen, sanotaan vaikka `lxc_provisioner.py`
. Se tekee kC$ynnistyessC$C$n tC$mC$n:
1. RekisterC6ityy Alphan reitittimeen (esim. `src: "mesh://alpha/public-lxc-mas
ter"` ja capabilities: `OMG-PROVISION-LXC`).
2. Kun se saa tuon pyynnC6n reitittimeltC$, se parsii `payloadin`.
3. Se tarkistaa vapaat portit isC$nnC$ltC$ ja ajaa LXC:n luontikomennot.
4. Se ottaa `reply_to` -osoitteen (`mesh://gem/orchestrator`) ja ampuu
takaisin kuitin:
```json
{
"head": {
"id": "fed_lxc_reply_001",
"type": "OMG-FEDERATE",
"src": "mesh://alpha/public-lxc-master"
},
"payload": {
"target_mesh": "gem",
"packet": {
"head": {
"id": "prov_reply_001",
"type": "OMG-PROVISION-REPLY",
"dst": "mesh://gem/orchestrator"
},
"payload": {
"status": "success",
"container_name": "ai-agent-44",
"internal_ip": "10.0.3.44",
"public_tcp": [10001],
"public_udp": [10001, 10002]
}
}
}
}
```
TC$mC$ paluupaketti menee Alphan DMZ-sillan kautta takaisin Hetzneriin,
suoraan alkuperC$iselle pyytC$jC$lle.
Miten haluat toteuttaa tC$mC$n Alpha-pC$C$n `public-lxc-master` -tyC6lC$isen?
TehdC$C$nkC6 sille Python-skripti, joka kuuntelee OMEGA-reititintC$ suojatussa
kontissa ja ajaa varsinaiset LXC- ja iptables-komennot isC$ntC$koneella (esim.
ohjatun SSH-yhteyden kautta)?