package Ġcom . netflix . spin n aker . ke el . rest . d gs Ċ Ċ import Ġcom . netflix . graphql . d gs . D gs Component Ċ import Ġcom . netflix . graphql . d gs . D gs Data Ċ import Ġcom . netflix . graphql . d gs . Input Argument Ċ import Ġcom . netflix . spin n aker . ke el . api . Artifact In Environment Context Ċ import Ġcom . netflix . spin n aker . ke el . api . action . ActionType Ċ import Ġcom . netflix . spin n aker . ke el . api . constraints . Constraint Status Ċ import Ġcom . netflix . spin n aker . ke el . api . constraints . Updated Constraint Status Ċ import Ġcom . netflix . spin n aker . ke el . core . api . Environment Artifact Pin Ċ import Ġcom . netflix . spin n aker . ke el . core . api . Environment Artifact Veto Ċ import Ġcom . netflix . spin n aker . ke el . exceptions . Invalid Constraint Exception Ċ import Ġcom . netflix . spin n aker . ke el . graphql . D gs Constants Ċ import Ġcom . netflix . spin n aker . ke el . graphql . types . Md Action Ċ import Ġcom . netflix . spin n aker . ke el . graphql . types . Md Artifact Version Action Payload Ċ import Ġcom . netflix . spin n aker . ke el . graphql . types . Md Constraint Status Ċ import Ġcom . netflix . spin n aker . ke el . graphql . types . Md Constraint Status Payload Ċ import Ġcom . netflix . spin n aker . ke el . graphql . types . Md Dismiss Notification Payload Ċ import Ġcom . netflix . spin n aker . ke el . graphql . types . Md Mark Artifact Version As Good Payload Ċ import Ġcom . netflix . spin n aker . ke el . graphql . types . Md Retry Artifact Action Payload Ċ import Ġcom . netflix . spin n aker . ke el . graphql . types . Md Un pin Artifact Version Payload Ċ import Ġcom . netflix . spin n aker . ke el . pause . Act uation Pa user Ċ import Ġcom . netflix . spin n aker . ke el . persistence . Delivery Config Repository Ċ import Ġcom . netflix . spin n aker . ke el . persistence . Dismiss ible Notification Repository Ċ import Ġcom . netflix . spin n aker . ke el . services . Application Service Ċ import Ġcom . netflix . spin n aker . ke el . vet o . un happy . Un happy Veto Ċ import Ġde . h ux h orn . s ulk y . ul id . UL ID Ċ import Ġorg . slf 4 j . LoggerFactory Ċ import Ġorg . springframework . web . bind . annotation . Request Header Ċ Ċ /** Ċ Ġ* ĠComponent Ġresponsible Ġfor Ġencaps ulating ĠGraphQL Ġmutations Ġexposed Ġon Ġthe ĠAPI . Ċ Ġ*/ Ċ @ D gs Component Ċ class ĠMut ations ( ĊĠ Ġprivate Ġval Ġapplication Service : ĠApplication Service , ĊĠ Ġprivate Ġval Ġact uation Pa user : ĠAct uation Pa user , ĊĠ Ġprivate Ġval Ġun happy Veto : ĠUn happy Veto , ĊĠ Ġprivate Ġval Ġdelivery Config Repository : ĠDelivery Config Repository , ĊĠ Ġprivate Ġval Ġnotification Repository : ĠDis miss ible Notification Repository Ċ ) Ġ{ ĊĊĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠ Ġprivate Ġval Ġlog Ġby Ġlazy Ġ{ ĠLoggerFactory . getLogger ( Mut ations :: class . java ) Ġ} ĊĠ Ġ} ĊĊĠ Ġ@ D gs Data ( parent Type Ġ= ĠD gs Constants . MUT ATION . TYPE _ NAME , Ġfield Ġ= Ġ" re check Un happy Resource ") ĊĠ Ġfun Ġre check Un happy Resource ( ĊĠĠĠ Ġ@ Input Argument Ġresource Id : ĠString ĊĠ Ġ) Ġ{ ĊĠĠĠ Ġun happy Veto . clear Veto ( resourceId ) ĊĠ Ġ} ĊĊĠ Ġ@ D gs Data ( parent Type Ġ= ĠD gs Constants . MUT ATION . TYPE _ NAME , Ġfield Ġ= ĠD gs Constants . MUT ATION . Update Constraint Status ) ĊĠ Ġfun Ġupdate Constraint Status ( ĊĠĠĠ Ġ@ Input Argument Ġpayload : ĠMd Constraint Status Payload , ĊĠĠĠ Ġ@ Request Header (" X - SP IN NA KER - USER ") Ġuser : ĠString ĊĠ Ġ): ĠBoolean Ġ{ ĊĊĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠ Ġreturn Ġapplication Service . update Constraint Status ( ĊĠĠĠĠĠĠĠ Ġuser Ġ= Ġuser , ĊĠĠĠĠĠĠĠ Ġapplication Ġ= Ġpayload . application , ĊĠĠĠĠĠĠĠ Ġenvironment Ġ= Ġpayload . environment , ĊĠĠĠĠĠĠĠ Ġstatus Ġ= Ġpayload . to Updated Constraint Status (), ĊĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ġcatch Ġ( e : ĠInvalid Constraint Exception ) Ġ{ ĊĠĠĠĠĠ Ġthrow Ġthrow ĠIllegalArgumentException ( e . message ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ@ D gs Data ( parent Type Ġ= ĠD gs Constants . MUT ATION . TYPE _ NAME , Ġfield Ġ= ĠD gs Constants . MUT ATION . Toggle Management ) ĊĠ Ġfun Ġtoggle Management ( ĊĠĠĠ Ġ@ Input Argument Ġapplication : ĠString , ĊĠĠĠ Ġ@ Input Argument Ġis Paused : ĠBoolean , ĊĠĠĠ Ġ@ Input Argument Ġcomment : ĠString ? Ġ= Ġnull , ĊĠĠĠ Ġ@ Request Header (" X - SP IN NA KER - USER ") Ġuser : ĠString ĊĠ Ġ): ĠBoolean Ġ{ ĊĠĠĠ Ġif Ġ( is Paused ) Ġ{ ĊĠĠĠĠĠ Ġact uation Pa user . pause Application ( application , Ġuser , Ġcomment ) ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠ Ġact uation Pa user . resume Application ( application , Ġuser ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġtrue ĊĠ Ġ} ĊĊĠ Ġ@ D gs Data ( parent Type Ġ= ĠD gs Constants . MUT ATION . TYPE _ NAME , Ġfield Ġ= ĠD gs Constants . MUT ATION . Pin Artifact Version ) ĊĠ Ġfun Ġpin Artifact Version ( ĊĠĠĠ Ġ@ Input Argument Ġpayload : ĠMd Artifact Version Action Payload , ĊĠĠĠ Ġ@ Request Header (" X - SP IN NA KER - USER ") Ġuser : ĠString ĊĠ Ġ): ĠBoolean Ġ{ ĊĠĠĠ Ġapplication Service . pin ( user , Ġpayload . application , Ġpayload . to Environment Artifact Pin ()) ĊĠĠĠ Ġreturn Ġtrue ĊĠ Ġ} ĊĊĠ Ġ@ D gs Data ( parent Type Ġ= ĠD gs Constants . MUT ATION . TYPE _ NAME , Ġfield Ġ= ĠD gs Constants . MUT ATION . Un pin Artifact Version ) ĊĠ Ġfun Ġun pin Artifact Version ( ĊĠĠĠ Ġ@ Input Argument Ġpayload : ĠMd Un pin Artifact Version Payload , ĊĠĠĠ Ġ@ Request Header (" X - SP IN NA KER - USER ") Ġuser : ĠString ĊĠ Ġ): ĠBoolean Ġ{ ĊĠĠĠ Ġapplication Service . delete Pin ( ĊĠĠĠĠĠ Ġuser Ġ= Ġuser , ĊĠĠĠĠĠ Ġapplication Ġ= Ġpayload . application , ĊĠĠĠĠĠ Ġtarget Environment Ġ= Ġpayload . environment , ĊĠĠĠĠĠ Ġreference Ġ= Ġpayload . reference ĊĠĠĠ Ġ) ĊĠĠĠ Ġreturn Ġtrue ĊĠ Ġ} ĊĊĠ Ġ@ D gs Data ( parent Type Ġ= ĠD gs Constants . MUT ATION . TYPE _ NAME , Ġfield Ġ= ĠD gs Constants . MUT ATION . Mark Artifact Version As Bad ) ĊĠ Ġfun Ġmark Artifact Version As Bad ( ĊĠĠĠ Ġ@ Input Argument Ġpayload : ĠMd Artifact Version Action Payload , ĊĠĠĠ Ġ@ Request Header (" X - SP IN NA KER - USER ") Ġuser : ĠString ĊĠ Ġ): ĠBoolean Ġ{ ĊĠĠĠ Ġapplication Service . mark As Veto ed In ( user , Ġpayload . application , Ġpayload . to Environment Artifact Veto (), Ġtrue ) ĊĠĠĠ Ġreturn Ġtrue ĊĠ Ġ} ĊĊĠ Ġ@ D gs Data ( parent Type Ġ= ĠD gs Constants . MUT ATION . TYPE _ NAME , Ġfield Ġ= ĠD gs Constants . MUT ATION . Mark Artifact Version As Good ) ĊĠ Ġfun Ġmark Artifact Version As Good ( ĊĠĠĠ Ġ@ Input Argument Ġpayload : ĠMd Mark Artifact Version As Good Payload , ĊĠĠĠ Ġ@ Request Header (" X - SP IN NA KER - USER ") Ġuser : ĠString ĊĠ Ġ): ĠBoolean Ġ{ ĊĠĠĠ Ġapplication Service . delete Veto ( ĊĠĠĠĠĠ Ġapplication Ġ= Ġpayload . application , ĊĠĠĠĠĠ Ġtarget Environment Ġ= Ġpayload . environment , ĊĠĠĠĠĠ Ġreference Ġ= Ġpayload . reference , ĊĠĠĠĠĠ Ġversion Ġ= Ġpayload . version ĊĠĠĠ Ġ) ĊĠĠĠ Ġreturn Ġtrue ĊĠ Ġ} ĊĊĠ Ġ@ D gs Data ( parent Type Ġ= ĠD gs Constants . MUT ATION . TYPE _ NAME , Ġfield Ġ= ĠD gs Constants . MUT ATION . Retry Artifact Version Action ) ĊĠ Ġfun Ġretry Artifact Version Action ( ĊĠĠĠ Ġ@ Input Argument Ġpayload : ĠMd Retry Artifact Action Payload , ĊĠĠĠ Ġ@ Request Header (" X - SP IN NA KER - USER ") Ġuser : ĠString ĊĠ Ġ): ĠMd Action Ġ{ ĊĊĠĠĠ Ġval Ġaction Type Ġ= ĠAction Type . valueOf ( payload . action Type . name ) ĊĠĠĠ Ġval Ġnew Status Ġ= Ġapplication Service . retry Artifact Version Action ( application Ġ= Ġpayload . application , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġenvironment Ġ= Ġpayload . environment , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġartifact Reference Ġ= Ġpayload . reference , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġartifact Version Ġ= Ġpayload . version , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaction Type Ġ= Ġaction Type , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaction Id Ġ= Ġpayload . action Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser Ġ= Ġuser ) ĊĊĠĠĠ ĠArtifact In Environment Context ( ĊĠĠĠĠĠ Ġdelivery Config Ġ= Ġdelivery Config Repository . getBy Application ( payload . application ), ĊĠĠĠĠĠ Ġenvironment Name Ġ= Ġpayload . environment , ĊĠĠĠĠĠ Ġartifact Reference Ġ= Ġpayload . reference , ĊĠĠĠĠĠ Ġversion Ġ= Ġpayload . version ĊĠĠĠ Ġ). apply Ġ{ ĊĠĠĠĠĠ Ġreturn ĠMd Action ( ĊĠĠĠĠĠĠĠ Ġid Ġ= Ġthis . get Md Action Id ( action Type , Ġpayload . action Id ), ĊĠĠĠĠĠĠĠ Ġaction Id Ġ= Ġpayload . action Id , ĊĠĠĠĠĠĠĠ Ġtype Ġ= Ġpayload . action Id , Ġ// ĠDeprecated Ġ- ĠTODO : Ġremove Ġthis ĊĠĠĠĠĠĠĠ Ġaction Type Ġ= Ġpayload . action Type , ĊĠĠĠĠĠĠĠ Ġstatus Ġ= Ġnew Status . to D gs Action Status (), ĊĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠDis mis ses Ġa Ġnotification , Ġgiven Ġit 's ĠID . ĊĠĠ Ġ*/ ĊĠ Ġ@ D gs Data ( parent Type Ġ= ĠD gs Constants . MUT ATION . TYPE _ NAME , Ġfield Ġ= ĠD gs Constants . MUT ATION . Dismiss Notification ) ĊĠ Ġfun Ġdismiss Notification ( ĊĠĠĠ Ġ@ Input Argument Ġpayload : ĠMd Dismiss Notification Payload , ĊĠĠĠ Ġ@ Request Header (" X - SP IN NA KER - USER ") Ġuser : ĠString ĊĠ Ġ): ĠBoolean Ġ{ ĊĠĠĠ Ġlog . debug (" Dis missing Ġnotification Ġwith ĠID =${ payload . id } Ġ( by Ġuser Ġ$ user )") ĊĠĠĠ Ġreturn Ġnotification Repository . dismiss Notification ById ( UL ID . parse UL ID ( payload . id ), Ġuser ) ĊĠ Ġ} Ċ } Ċ Ċ fun ĠMd Constraint Status Payload . to Updated Constraint Status (): ĠUpdated Constraint Status Ġ= ĊĠ ĠUpdated Constraint Status ( ĊĠĠĠ Ġtype Ġ= Ġtype , ĊĠĠĠ Ġartifact Reference Ġ= Ġreference , ĊĠĠĠ Ġartifact Version Ġ= Ġversion , ĊĠĠĠ Ġstatus Ġ= Ġstatus . to Constraint Status (), ĊĠ Ġ) Ċ Ċ fun ĠMd Artifact Version Action Payload . to Environment Artifact Pin (): ĠEnvironment Artifact Pin Ġ= ĊĠ ĠEnvironment Artifact Pin ( ĊĠĠĠ Ġtarget Environment Ġ= Ġenvironment , ĊĠĠĠ Ġreference Ġ= Ġreference , ĊĠĠĠ Ġversion Ġ= Ġversion , ĊĠĠĠ Ġcomment Ġ= Ġcomment , ĊĠĠĠ Ġpinned By Ġ= Ġnull ĊĠ Ġ) Ċ Ċ fun ĠMd Artifact Version Action Payload . to Environment Artifact Veto (): ĠEnvironment Artifact Veto Ġ= ĊĠ ĠEnvironment Artifact Veto ( ĊĠĠĠ Ġtarget Environment Ġ= Ġenvironment , ĊĠĠĠ Ġreference Ġ= Ġreference , ĊĠĠĠ Ġversion Ġ= Ġversion , ĊĠĠĠ Ġcomment Ġ= Ġcomment , ĊĠĠĠ Ġv eto edBy Ġ= Ġnull ĊĠ Ġ) Ċ Ċ fun ĠMd Constraint Status . to Constraint Status (): ĠConstraint Status Ġ= ĊĠ Ġwhen Ġ( this ) Ġ{ ĊĠĠĠ ĠMd Constraint Status . FAIL Ġ-> ĠConstraint Status . FAIL ĊĠĠĠ ĠMd Constraint Status . FORCE _ PASS Ġ-> ĠConstraint Status . OVERRIDE _ PASS ĊĠĠĠ ĠMd Constraint Status . PASS Ġ-> ĠConstraint Status . PASS ĊĠĠĠ ĠMd Constraint Status . PENDING Ġ-> ĠConstraint Status . PENDING ĊĠĠĠ Ġelse Ġ-> Ġthrow ĠIllegalArgumentException (" Invalid Ġconstraint Ġstatus ") ĊĠ Ġ} ĊĊ