package infrastructure import ( oclib "cloud.o-forge.io/core/oc-lib" "cloud.o-forge.io/core/oc-lib/dbs" "cloud.o-forge.io/core/oc-lib/models/allowed_image" ) // defaultAllowedImages est la liste des images utilitaires légères autorisées // à persister sur tous les peers sans action de l'opérateur. // // Ces entrées sont marquées IsDefault:true et ne peuvent pas être supprimées // via l'API — elles sont sous contrôle exclusif du code de la plateforme. var defaultAllowedImages = []allowed_image.AllowedImage{ {Image: "natsio/nats-box", TagConstraint: "", IsDefault: true}, // outil NATS utilisé par les native tools {Image: "library/alpine", TagConstraint: "", IsDefault: true}, // base image légère standard {Image: "library/busybox", TagConstraint: "", IsDefault: true}, // utilitaire shell minimal } // BootstrapAllowedImages insère les images par défaut si elles sont absentes // en base. Les entrées existantes ne sont pas modifiées. // À appeler une fois au démarrage, avant beego.Run(). func BootstrapAllowedImages() { req := oclib.NewRequestAdmin(oclib.LibDataEnum(oclib.ALLOWED_IMAGE), nil) for _, img := range defaultAllowedImages { // Vérifie si une entrée avec ce nom d'image existe déjà. existing := req.Search(&dbs.Filters{ And: map[string][]dbs.Filter{ "image": {{Operator: dbs.EQUAL.String(), Value: img.Image}}, }, }, "", false) if existing.Err != "" || len(existing.Data) > 0 { continue // déjà présente ou erreur de recherche : on passe } local := img // copie pour éviter la capture de boucle req.StoreOne(local.Serialize(&local)) } }