package Ġcom . netflix . spin n aker . ke el . bak ery . constraint Ċ Ċ import Ġcom . netflix . f rig ga . ami . App Version Ċ import Ġcom . netflix . spin n aker . ke el . api . Delivery Config Ċ import Ġcom . netflix . spin n aker . ke el . api . Environment Ċ import Ġcom . netflix . spin n aker . ke el . api . artifacts . Delivery Artifact Ċ import Ġcom . netflix . spin n aker . ke el . api . artifacts . VirtualMachine Options Ċ import Ġcom . netflix . spin n aker . ke el . api . constraints . Constraint Evaluator Ċ import Ġcom . netflix . spin n aker . ke el . api . constraints . Supported Constraint Type Ċ import Ġcom . netflix . spin n aker . ke el . api . support . Event Publisher Ċ import Ġcom . netflix . spin n aker . ke el . artifacts . Deb ian Artifact Ċ import Ġcom . netflix . spin n aker . ke el . bak ery . api . Image Exists Constraint Ċ import Ġcom . netflix . spin n aker . ke el . clo udd river . Image Service Ċ import Ġcom . netflix . spin n aker . ke el . clo udd river . model . Named Image Ċ import Ġcom . netflix . spin n aker . ke el . getConfig Ċ import Ġcom . netflix . spin n aker . k ork . dynamic config . Dynamic Config Service Ċ import Ġkotlinx . coroutines . run Blocking Ċ import Ġorg . slf 4 j . LoggerFactory Ċ import Ġorg . springframework . stereotype . Component Ċ Ċ /** Ċ Ġ* ĠThis Ġis Ġan Ġimplicit Ġconstraint Ġthat Ġis Ġused Ġto Ġprevent Ġpromotion Ġof Ġa ĠDebian Ġartifact Ġversion Ġto Ċ Ġ* Ġan Ġenvironment Ġbefore Ġan ĠA MI Ġhas Ġbeen Ġb aked . ĠIf Ġwe Ġallow Ġthe Ġversion Ġto Ġpromote Ġbefore Ġthat , Ġany Ċ Ġ* Ġclusters Ġin Ġthe Ġenvironment Ġwill Ġerror Ġon Ġtheir Ġresource Ġchecks Ġbecause Ġthey Ġwill Ġbe Ġunable Ġto Ċ Ġ* Ġfind Ġthe ĠA MI . Ċ Ġ*/ Ċ @ Component Ċ class ĠImage Exists Constraint Evaluator ( ĊĠ Ġprivate Ġval Ġimage Service : ĠImage Service , ĊĠ Ġprivate Ġval Ġdynamic Config Service : ĠDynamic Config Service , ĊĠ Ġoverride Ġval Ġevent Publisher : ĠEvent Publisher Ċ ) Ġ: ĠConstraint Evaluator < Image Exists Constraint > Ġ{ ĊĊĠ Ġoverride Ġfun Ġis Implicit (): ĠBoolean Ġ= Ġtrue ĊĊĠ Ġoverride Ġval Ġsupported Type Ġ= ĠSupported Constraint Type < Image Exists Constraint >(" b ake ") ĊĊĠ Ġoverride Ġfun Ġcan Prom ote ( ĊĠĠĠ Ġartifact : ĠDelivery Artifact , ĊĠĠĠ Ġversion : ĠString , ĊĠĠĠ Ġdelivery Config : ĠDelivery Config , ĊĠĠĠ Ġtarget Environment : ĠEnvironment ĊĠ Ġ): ĠBoolean Ġ{ ĊĠĠĠ Ġif Ġ( artifact Ġ! is ĠDebian Artifact ) Ġ{ ĊĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġimage Ġ= Ġfind Matching Image ( version , Ġartifact . vm Options ) ĊĠĠĠ Ġreturn Ġimage Ġ!= Ġnull ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġfind Matching Image ( version : ĠString , Ġvm Options : ĠVirtual Machine Options ): ĠNamed Image ? Ġ{ ĊĠĠĠ Ġlog . debug (" Searching Ġfor Ġb aked Ġimage Ġfor Ġ{} Ġin Ġ{}", Ġversion , Ġvm Options . regions . join ToString ()) ĊĠĠĠ Ġreturn Ġrun Blocking Ġ{ ĊĠĠĠĠĠ Ġimage Service . get Latest Named Image With All Regions For App Version ( ĊĠĠĠĠĠĠĠ ĠApp Version . parse Name ( version ), ĊĠĠĠĠĠĠĠ Ġdefault Image Account , ĊĠĠĠĠĠĠĠ Ġvm Options . regions ĊĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġprivate Ġval Ġdefault Image Account : ĠString ĊĠĠĠ Ġget () Ġ= Ġdynamic Config Service . getConfig (" images . default - account ", Ġ" test ") ĊĊĠ Ġprivate Ġval Ġlog Ġby Ġlazy Ġ{ ĠLoggerFactory . getLogger ( java Class ) Ġ} Ċ } Ċ