package Ġno . sk at te et aten . aur ora . mo key . controller Ċ Ċ import Ġno . sk at te et aten . aur ora . mo key . model . Application Data Ċ import Ġno . sk at te et aten . aur ora . mo key . model . Application Deployment Command Ċ import Ġno . sk at te et aten . aur ora . mo key . model . Deploy Details Ċ import Ġno . sk at te et aten . aur ora . mo key . model . Image Details Ċ import Ġno . sk at te et aten . aur ora . mo key . model . Info Response Ċ import Ġno . sk at te et aten . aur ora . mo key . model . Management Endpoint Result Ċ import Ġno . sk at te et aten . aur ora . mo key . model . Pod Details Ċ import Ġno . sk at te et aten . aur ora . mo key . service . Application DataService Ċ import Ġorg . springframework . stereotype . Component Ċ import Ġorg . springframework . web . bind . annotation . GetMapping Ċ import Ġorg . springframework . web . bind . annotation . PathVariable Ċ import Ġorg . springframework . web . bind . annotation . RequestMapping Ċ import Ġorg . springframework . web . bind . annotation . RequestParam Ċ import Ġorg . springframework . web . bind . annotation . RestController Ċ import Ġuk . q 3 c . rest . hal . Hal Link Ċ Ċ @ Experimental Std lib Api Ċ @ RestController Ċ @ RequestMapping ( Application Deployment Details Controller . path ) Ċ class ĠApplication Deployment Details Controller ( ĊĠĠĠ Ġval Ġapplication DataService : ĠApplication DataService , ĊĠĠĠ Ġval Ġassembler : ĠApplication Deployment Details Resource Assembler , Ċ ) Ġ{ ĊĠĠĠ Ġ@ GetMapping ("/ { id }") ĊĠĠĠ Ġsuspend Ġfun Ġget ( ĊĠĠĠĠĠĠĠ Ġ@ PathVariable Ġid : ĠString , ĊĠĠĠ Ġ): ĠApplication Deployment Details Resource ? Ġ= Ġapplication DataService . find Application Data By Application Deployment Id ( id ) ĊĠĠĠĠĠĠĠ Ġ? . let ( assembler :: to Resource ) ĊĠĠĠĠĠĠĠ Ġ?: Ġthrow ĠNoSuch Resource Exception (" Does Ġnot Ġexist ") ĊĊĠĠĠ Ġ@ GetMapping ĊĠĠĠ Ġsuspend Ġfun ĠgetAll ( ĊĠĠĠĠĠĠĠ Ġ@ RequestParam ( required Ġ= Ġfalse , ĠdefaultValue Ġ= Ġ"", Ġname Ġ= Ġ" aff iliation ") Ġaffili ation : ĠList < String >, ĊĠĠĠĠĠĠĠ Ġ@ RequestParam ( required Ġ= Ġfalse , ĠdefaultValue Ġ= Ġ"", Ġname Ġ= Ġ" id ") Ġid : ĠList < String >, ĊĠĠĠ Ġ): ĠList < Application Deployment Details Resource > Ġ= Ġassembler . to Resources ( ĊĠĠĠĠĠĠĠ Ġapplication DataService . findAll Application Data ( aff iliation , Ġid ) ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval Ġpath Ġ= Ġ"/ api / auth / application deployment details " ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Component Ċ class ĠApplication Deployment Details Resource Assembler ( ĊĠĠĠ Ġval Ġlink Builder : ĠLink Builder Ċ ) Ġ: ĠResource Assembler Support < Application Data , ĠApplication Deployment Details Resource >() Ġ{ ĊĠĠĠ Ġ@ Experimental Std lib Api ĊĠĠĠ Ġoverride Ġfun Ġto Resource ( entity : ĠApplication Data ): ĠApplication Deployment Details Resource Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinfo Response Ġ= Ġentity . first Info Response ĊĠĠĠĠĠĠĠ Ġval Ġservice Links Ġ= Ġentity . first Info Response ?. service Links ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ? . map Ġ{ Ġcreate Service Link ( entity , Ġit . value , Ġit . key ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġempty List () ĊĊĠĠĠĠĠĠĠ Ġreturn ĠApplication Deployment Details Resource ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġentity . application Deployment Id , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdated By Ġ= Ġentity . deploy Details ?. updated By , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuild Time Ġ= Ġinfo Response ?. build Time , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgit Info Ġ= Ġto Git Info Resource ( info Response ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimage Details Ġ= Ġentity . image Details ?. let Ġ{ Ġto Image Details Resource ( it ) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdeploy Details Ġ= Ġentity . deploy Details ?. let Ġ{ Ġto Deploy Details Resource ( it ) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpod Resources Ġ= Ġentity . pods . map Ġ{ Ġto Pod Resource ( entity , Ġit ) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdependencies Ġ= Ġinfo Response ?. dependencies Ġ?: Ġempty Map (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapplication Deployment Command Ġ= Ġto Deployment Command Resource ( entity . deployment Command ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdatabases Ġ= Ġentity . databases , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġservice Links Ġ= Ġservice Links . to Links () ĊĠĠĠĠĠĠĠ Ġ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Application Links ( entity ). forEach Ġ{ Ġ( rel , Ġhref ) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlink ( rel , ĠHal Link ( href )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġto Deploy Details Resource ( it : ĠDeploy Details ): ĠDeploy Details Resource Ġ= ĠDeploy Details Resource ( ĊĠĠĠĠĠĠĠ Ġtarget Replicas Ġ= Ġit . target Replicas , ĊĠĠĠĠĠĠĠ Ġavailable Replicas Ġ= Ġit . available Replicas , ĊĠĠĠĠĠĠĠ Ġdeployment Ġ= Ġit . deployment , ĊĠĠĠĠĠĠĠ Ġphase Ġ= Ġit . phase , ĊĠĠĠĠĠĠĠ Ġdeploy Tag Ġ= Ġit . deploy Tag , ĊĠĠĠĠĠĠĠ Ġpaused Ġ= Ġit . paused , ĊĠĠĠĠĠĠĠ Ġscaled Down Ġ= Ġit . scaled Down , ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġprivate Ġfun Ġto Image Details Resource ( image Details : ĠImage Details ) Ġ= ĠImage Details Resource ( ĊĠĠĠĠĠĠĠ Ġimage Details . image Build Time , ĊĠĠĠĠĠĠĠ Ġimage Details . docker Image Reference , ĊĠĠĠĠĠĠĠ Ġimage Details . docker Image Tag Reference , ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġprivate Ġfun Ġto Pod Resource ( ĊĠĠĠĠĠĠĠ Ġapplication Data : ĠApplication Data , ĊĠĠĠĠĠĠĠ Ġpod Details : ĠPod Details , ĊĠĠĠ Ġ): ĠPod Resource Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpod Ġ= Ġpod Details . open Shift Pod Ex cerpt ĊĠĠĠĠĠĠĠ Ġval Ġpod Links Ġ= Ġpod Details . management Data . let Ġ{ Ġmanagement Data Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpod Management Links Ġ= Ġmanagement Data . info ?. de serialized ?. pod Links ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpod Management Links ?. map Ġ{ Ġcreate Pod Link ( application Data , Ġpod Details , Ġit . value , Ġit . key ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġ?: Ġempty List () ĊĠĠĠĠĠĠĠ Ġval Ġconsole Links Ġ= Ġlink Builder . open Shift Console Links ( pod . name , Ġapplication Data . namespace ) ĊĠĠĠĠĠĠĠ Ġval Ġmanagement Responses Resource Ġ= Ġpod Details . management Data . let Ġ{ Ġmanagement Data Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlinks Ġ= Ġto HttpResponse Resource ( management Data . links ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhealth Ġ= Ġmanagement Data . health ?. let Ġ{ Ġto HttpResponse Resource ( management Data . health ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinfo Ġ= Ġmanagement Data . info ?. let Ġ{ Ġto HttpResponse Resource ( management Data . info ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġenv Ġ= Ġmanagement Data . env ?. let Ġ{ Ġto HttpResponse Resource ( management Data . env ) Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠManagement Responses Resource ( links , Ġhealth , Ġinfo , Ġenv ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠPod Resource ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġpod . name , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġphase Ġ= Ġpod . phase , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartTime Ġ= Ġpod . startTime , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdeploy Tag Ġ= Ġpod . deploy Tag , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlatest Deploy Tag Ġ= Ġpod . latest Deploy Tag , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreplica Name Ġ= Ġpod . replica Name , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlatest Replica Name Ġ= Ġpod . latest Replica Name , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmanagement Responses Ġ= Ġmanagement Responses Resource , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontainers Ġ= Ġpod . containers . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠContainer Resource ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġit . name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstate Ġ= Ġit . state , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrestart Count Ġ= Ġit . restart Count , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimage Ġ= Ġit . image , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġready Ġ= Ġit . ready , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpod Links . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . link ( it . rel , ĠHal Link ( it . href )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġconsole Links . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . link ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġ< T > Ġto HttpResponse Resource ( ĊĠĠĠĠĠĠĠ Ġresult : ĠManagement Endpoint Result < T >, ĊĠĠĠ Ġ): ĠHttpResponse Resource Ġ= Ġresult . response ?. let Ġ{ Ġresponse Ġ-> ĊĠĠĠĠĠĠĠ ĠHttpResponse Resource ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhas Response Ġ= Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext Response Ġ= Ġresponse . json Content Or Error (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhttp Code Ġ= Ġresponse . code , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠcreatedAt Ġ= Ġresult . createdAt , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġurl Ġ= Ġresult . url , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġerror Ġ= Ġif Ġ(! result . is Success ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠManagement Endpoint Error Resource ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessage Ġ= Ġresult . errorMessage , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcode Ġ= Ġresult . result Code , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ġ?: ĠHttpResponse Resource ( ĊĠĠĠĠĠĠĠ Ġhas Response Ġ= Ġfalse , ĊĠĠĠĠĠĠĠ ĠcreatedAt Ġ= Ġresult . createdAt , ĊĠĠĠĠĠĠĠ Ġurl Ġ= Ġresult . url , ĊĠĠĠĠĠĠĠ Ġerror Ġ= Ġif Ġ(! result . is Success ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠManagement Endpoint Error Resource ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessage Ġ= Ġresult . errorMessage , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcode Ġ= Ġresult . result Code , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġprivate Ġfun Ġto Git Info Resource ( a Pod : ĠInfo Response ?) Ġ= ĠGit Info Resource ( a Pod ?. commit Id , Ġa Pod ?. commit Time ) ĊĊĠĠĠ Ġprivate Ġfun Ġto Deployment Command Resource ( ĊĠĠĠĠĠĠĠ Ġdeployment Command : ĠApplication Deployment Command ĊĠĠĠ Ġ) Ġ= ĠApplication Deployment Command Resource ( ĊĠĠĠĠĠĠĠ Ġoverride Files Ġ= Ġdeployment Command . override Files , ĊĠĠĠĠĠĠĠ Ġapplication Deployment Ref Ġ= ĠApplication Deployment Ref Resource ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdeployment Command . application Deployment Ref . environment , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdeployment Command . application Deployment Ref . application , ĊĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠ Ġa ur ora Config Ġ= ĠA ur ora Config Ref Resource ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdeployment Command . aur ora Config . name , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdeployment Command . aur ora Config . ref Name , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdeployment Command . aur ora Config . resolved Ref , ĊĠĠĠĠĠĠĠ Ġ), ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ Experimental Std lib Api ĊĠĠĠ Ġprivate Ġfun Ġcreate Application Links ( application Data : ĠApplication Data ): ĠList < Link > Ġ= Ġbuild List Ġ{ ĊĠĠĠĠĠĠĠ Ġadd All ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapplication Data . addresses . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlink Builder . create Link ( it . url . toString (), Ġit :: class . simple Name !! ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġadd All ( link Builder . deployment Spec ( application Data . deployment Command )) ĊĠĠĠĠĠĠĠ Ġadd All ( link Builder . files ( application Data . deployment Command )) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( application Data . b oo ber Deploy Id Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġapply Result Link Ġ= Ġlink Builder . apply Result ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapplication Data . deployment Command . aur ora Config . name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapplication Data . b oo ber Deploy Id , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( apply Result Link ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġadd ( link Builder . apply ( deployment Command Ġ= Ġapplication Data . deployment Command )) ĊĠĠĠĠĠĠĠ Ġadd All ( link Builder . aur ora ConfigFile ( deployment Command Ġ= Ġapplication Data . deployment Command )) ĊĠĠĠĠĠĠĠ Ġadd ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlink Builder . create Mo key Link ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Application Deployment ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ Application Deployment Controller . path }/${ application Data . application Deployment Id }", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġadd ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlink Builder . create Mo key Link ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Application ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ Application Controller . path }/${ application Data . application Id }", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Service Link ( ĊĠĠĠĠĠĠĠ Ġapplication Data : ĠApplication Data , ĊĠĠĠĠĠĠĠ Ġlink : ĠString , ĊĠĠĠĠĠĠĠ Ġrel : ĠString , ĊĠĠĠ Ġ) Ġ= Ġlink Builder . create Link ( ĊĠĠĠĠĠĠĠ Ġlink , ĊĠĠĠĠĠĠĠ Ġrel , ĊĠĠĠĠĠĠĠ Ġapplication Data . expand Params , ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Pod Link ( ĊĠĠĠĠĠĠĠ Ġapplication Data : ĠApplication Data , ĊĠĠĠĠĠĠĠ Ġpod Details : ĠPod Details , ĊĠĠĠĠĠĠĠ Ġlink : ĠString , ĊĠĠĠĠĠĠĠ Ġrel : ĠString , ĊĠĠĠ Ġ): ĠLink Ġ= Ġlink Builder . create Link ( ĊĠĠĠĠĠĠĠ Ġlink , ĊĠĠĠĠĠĠĠ Ġrel , ĊĠĠĠĠĠĠĠ Ġapplication Data . expand Params Ġ+ Ġpod Details . expand Params , ĊĠĠĠ Ġ) Ċ } Ċ Ċ private Ġval ĠApplication Data . first Info Response : ĠInfo Response ? ĊĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpod Ġ= Ġthis . pods . first OrNull () ĊĠĠĠĠĠĠĠ Ġreturn Ġpod ?. management Data ?. info ?. de serialized ĊĠĠĠ Ġ} Ċ