Audit Trail est le seul produit Scaleway où cet émulateur serait la source de
vérité plutôt qu'un imitateur.
Ce qu'il n'aurait pas à inventer
Le noyau tient déjà un journal de ses propres appels :
internal/core/emulator/events.go:30 Bounded. 256 entries, oldest dropped.
Chaque entrée est un trace.Exchange avec method, path, operation,
status, req, res et les en-têtes, publié en SSE sur GET /_feint/events.
Un pack audit_trail qui projette cet anneau en
Event{recorded_at, principal, product_name, method_name, resources, status_code}
ne devine rien : ce sont ses propres appels, qu'il est seul à connaître
exactement. Partout ailleurs, feint imite ce qu'un cloud répond ; ici, il
rapporterait ce qu'il a fait.
Ce qui est absent aujourd'hui
grep -c '"audit_trail/' internal/providers/scaleway/pack.go -> 0
grep -c 'audit_trail' coverage/scaleway-coverage.json -> 0
grep -c 'audit_trail' contracts/scaleway.json -> 0
Non routé, non scanné, non contracté. Le SDK publie 21 méthodes sur
audit_trail/v1alpha1.
Le client qui le demanderait
stephrobert/collection-scaleway a un rôle fleet_diff qui compare deux
instantanés et sait dire ce qui a changé, jamais qui l'a changé : deux
photos ne portent pas d'acteur. C'est la question que leur fleet_changes
posera et à laquelle il ne pourra pas répondre seul (leur #256).
L'énumération ResourceType du SDK nomme exactement ce que ce pack sert :
instance_server, kube_cluster, load_balancer_lb, vpc_gw_gateway,
baremetal_server, sbs_volume, ipam_ip.
Le périmètre
Les trois lectures d'abord : ListEvents (filtré par resource_type,
method_name, status, recorded_after/before, product_name, resource_id),
ListAuthenticationEvents, ListProducts. Les règles d'alerte sont un second
temps.
Les limites à écrire d'emblée, pas après
v1alpha1. Ce dépôt refuse d'épingler des formes alpha sans client
mesuré ; ici le client mesuré serait cette collection, ce qui lève l'objection
mais doit être écrit plutôt que supposé.
- L'anneau est borné à 256 et non persistant. Un
recorded_after qui remonte
plus loin ne trouvera rien, et c'est une divergence à mettre dans
docs/limits.md, pas une approximation à taire. La persistance est 0.18.0.
principal serait la clé telle qu'envoyée, puisque rien ne la vérifie
ici. À documenter comme une limite, jamais à présenter comme une identité.
Pourquoi ce n'est pas urgent
Cette surface n'a de consommateur que le jour où leur fleet_changes existe.
Elle est ici pour être décidée en même temps que lui.
Relevé par un audit croisé des deux dépôts. Contrepartie ouverte chez eux :
stephrobert/collection-scaleway#256.
Audit Trail est le seul produit Scaleway où cet émulateur serait la source de
vérité plutôt qu'un imitateur.
Ce qu'il n'aurait pas à inventer
Le noyau tient déjà un journal de ses propres appels :
Chaque entrée est un
trace.Exchangeavecmethod,path,operation,status,req,reset les en-têtes, publié en SSE surGET /_feint/events.Un pack
audit_trailqui projette cet anneau enEvent{recorded_at, principal, product_name, method_name, resources, status_code}ne devine rien : ce sont ses propres appels, qu'il est seul à connaître
exactement. Partout ailleurs, feint imite ce qu'un cloud répond ; ici, il
rapporterait ce qu'il a fait.
Ce qui est absent aujourd'hui
Non routé, non scanné, non contracté. Le SDK publie 21 méthodes sur
audit_trail/v1alpha1.Le client qui le demanderait
stephrobert/collection-scalewaya un rôlefleet_diffqui compare deuxinstantanés et sait dire ce qui a changé, jamais qui l'a changé : deux
photos ne portent pas d'acteur. C'est la question que leur
fleet_changesposera et à laquelle il ne pourra pas répondre seul (leur #256).
L'énumération
ResourceTypedu SDK nomme exactement ce que ce pack sert :instance_server,kube_cluster,load_balancer_lb,vpc_gw_gateway,baremetal_server,sbs_volume,ipam_ip.Le périmètre
Les trois lectures d'abord :
ListEvents(filtré parresource_type,method_name,status,recorded_after/before,product_name,resource_id),ListAuthenticationEvents,ListProducts. Les règles d'alerte sont un secondtemps.
Les limites à écrire d'emblée, pas après
v1alpha1. Ce dépôt refuse d'épingler des formes alpha sans clientmesuré ; ici le client mesuré serait cette collection, ce qui lève l'objection
mais doit être écrit plutôt que supposé.
recorded_afterqui remonteplus loin ne trouvera rien, et c'est une divergence à mettre dans
docs/limits.md, pas une approximation à taire. La persistance est 0.18.0.principalserait la clé telle qu'envoyée, puisque rien ne la vérifieici. À documenter comme une limite, jamais à présenter comme une identité.
Pourquoi ce n'est pas urgent
Cette surface n'a de consommateur que le jour où leur
fleet_changesexiste.Elle est ici pour être décidée en même temps que lui.
Relevé par un audit croisé des deux dépôts. Contrepartie ouverte chez eux :
stephrobert/collection-scaleway#256.