57 lines
1.9 KiB
Go
57 lines
1.9 KiB
Go
|
|
package allowed_image
|
||
|
|
|
||
|
|
import (
|
||
|
|
"cloud.o-forge.io/core/oc-lib/models/utils"
|
||
|
|
"cloud.o-forge.io/core/oc-lib/tools"
|
||
|
|
)
|
||
|
|
|
||
|
|
// AllowedImage représente une image de conteneur autorisée à persister
|
||
|
|
// sur un peer après l'exécution d'un workflow.
|
||
|
|
//
|
||
|
|
// La décision de rétention est entièrement locale au datacenter —
|
||
|
|
// le fournisseur de processing n'a aucun levier sur cette liste.
|
||
|
|
//
|
||
|
|
// Règle de matching (côté oc-datacenter) :
|
||
|
|
// - Registry vide = toutes les registries
|
||
|
|
// - TagConstraint vide = toutes les versions
|
||
|
|
// - TagConstraint non vide = exact ou glob (ex: "3.*", "1.2.3")
|
||
|
|
//
|
||
|
|
// Les entrées IsDefault sont créées au bootstrap et ne peuvent pas
|
||
|
|
// être supprimées via l'API.
|
||
|
|
type AllowedImage struct {
|
||
|
|
utils.AbstractObject
|
||
|
|
|
||
|
|
// Registry source (ex: "docker.io", "registry.example.com").
|
||
|
|
// Vide = wildcard, accepte n'importe quelle registry.
|
||
|
|
Registry string `json:"registry,omitempty" bson:"registry,omitempty"`
|
||
|
|
|
||
|
|
// Image est le nom de l'image sans registry ni tag
|
||
|
|
// (ex: "natsio/nats-box", "library/alpine").
|
||
|
|
Image string `json:"image" bson:"image" validate:"required"`
|
||
|
|
|
||
|
|
// TagConstraint est la contrainte sur le tag.
|
||
|
|
// Vide = toutes les versions autorisées.
|
||
|
|
// Supporte exact ("1.2.3") ou glob ("3.*", "*-alpine").
|
||
|
|
TagConstraint string `json:"tag_constraint,omitempty" bson:"tag_constraint,omitempty"`
|
||
|
|
|
||
|
|
// IsDefault marque les entrées bootstrap insérées au démarrage.
|
||
|
|
// Ces entrées ne peuvent pas être supprimées via l'API.
|
||
|
|
IsDefault bool `json:"is_default,omitempty" bson:"is_default,omitempty"`
|
||
|
|
}
|
||
|
|
|
||
|
|
func (a *AllowedImage) StoreDraftDefault() {
|
||
|
|
a.IsDraft = false // les allowed images sont actives immédiatement
|
||
|
|
}
|
||
|
|
|
||
|
|
func (a *AllowedImage) CanUpdate(set utils.DBObject) (bool, utils.DBObject) {
|
||
|
|
return true, set
|
||
|
|
}
|
||
|
|
|
||
|
|
func (a *AllowedImage) CanDelete() bool {
|
||
|
|
return !a.IsDefault // les entrées bootstrap sont non supprimables
|
||
|
|
}
|
||
|
|
|
||
|
|
func (a *AllowedImage) GetAccessor(request *tools.APIRequest) utils.Accessor {
|
||
|
|
return NewAccessor(request)
|
||
|
|
}
|