package Ġpl . al leg ro . tech . service mesh . envoy control . snapshot Ċ Ċ import Ġcom . google . protobuf . Duration Ċ import Ġcom . google . protobuf . UInt 3 2 Value Ċ import Ġcom . google . protobuf . util . Dur ations Ċ import Ġio . envoy proxy . envoy . api . v 2 . Route Configuration Ċ import Ġio . envoy proxy . envoy . api . v 2 . core . DataSource Ċ import Ġio . envoy proxy . envoy . api . v 2 . route . Direct Response Action Ċ import Ġio . envoy proxy . envoy . api . v 2 . route . Header Matcher Ċ import Ġio . envoy proxy . envoy . api . v 2 . route . Retry Policy Ċ import Ġio . envoy proxy . envoy . api . v 2 . route . Route Ċ import Ġio . envoy proxy . envoy . api . v 2 . route . Route Action Ċ import Ġio . envoy proxy . envoy . api . v 2 . route . Route Match Ċ import Ġio . envoy proxy . envoy . api . v 2 . route . Virtual Cluster Ċ import Ġio . envoy proxy . envoy . api . v 2 . route . Virtual Host Ċ import Ġpl . al leg ro . tech . service mesh . envoy control . groups . Incoming Endpoint Ċ import Ġpl . al leg ro . tech . service mesh . envoy control . groups . Path Matching Type Ċ import Ġpl . al leg ro . tech . service mesh . envoy control . groups . Proxy Settings Ċ import Ġpl . al leg ro . tech . service mesh . envoy control . groups . Role Ċ Ċ internal Ġclass ĠEn voy Ingress Routes Factory ( ĊĠĠĠ Ġprivate Ġval Ġproperties : ĠSnapshot Properties Ċ ) Ġ{ ĊĠĠĠ Ġprivate Ġfun Ġcluster Route Action ( ĊĠĠĠĠĠĠĠ Ġresponse Timeout : ĠDuration ?, ĊĠĠĠĠĠĠĠ Ġidle Timeout : ĠDuration ?, ĊĠĠĠĠĠĠĠ Ġcluster Name : ĠString Ġ= Ġ" local _ service " ĊĠĠĠ Ġ): ĠRoute Action . Builder Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtimeout Response Ġ= Ġresponse Timeout Ġ?: ĠDur ations . from Millis ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproperties . local Service . response Timeout . to Millis () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġtimeout Idle Ġ= Ġidle Timeout Ġ?: ĠDur ations . from Millis ( properties . local Service . idle Timeout . to Millis ()) ĊĠĠĠĠĠĠĠ Ġreturn ĠRoute Action . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Cluster ( cluster Name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setTimeout ( timeout Response ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Idle Timeout ( timeout Idle ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġstatus Path Pattern Ġ= Ġproperties . routes . status . path Prefix Ġ+ Ġ" .* " ĊĊĠĠĠ Ġprivate Ġfun Ġstatus Route ( local Route Action : ĠRoute Action . Builder ): ĠRoute ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠRoute . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Match ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRoute Match . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Prefix ( properties . routes . status . path Prefix ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Headers ( http Method Matcher ( HttpMethod . GET )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Route ( local Route Action ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġfallback Ingress Route Ġ= ĠRoute . newBuilder () ĊĠĠĠĠĠĠĠ Ġ. set Match ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRoute Match . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Prefix ("/") ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ. set Direct Response ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDirect Response Action . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setStatus ( properties . incoming Permissions . endpoint Unavailable StatusCode ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Body ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDataSource . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Inline String (" Requested Ġresource Ġis Ġunavailable Ġor Ġclient Ġnot Ġpermitted ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠ Ġprivate Ġfun Ġretry Policy ( retry Props : ĠRetry Policy Properties ): ĠRetry Policy Ġ= ĠRetry Policy . newBuilder (). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġretry On Ġ= Ġretry Props . retry On . join ToString ( separator Ġ= Ġ", ") ĊĠĠĠĠĠĠĠ Ġnum Retries Ġ= ĠUInt 3 2 Value . of ( retry Props . num Retries ) ĊĠĠĠĠĠĠĠ Ġif Ġ(! retry Props . per Try Timeout . is Zero ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġper Try Timeout Ġ= ĠDur ations . from Millis ( retry Props . per Try Timeout . to Millis ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġhost Selection Retry Max Attempts Ġ= Ġretry Props . host Selection Retry Max Attempts ĊĠĠĠĠĠĠĠ Ġadd All Ret ri able StatusCode s ( retry Props . ret ri able StatusCode s ) ĊĠĠĠ Ġ}. build () ĊĊĠĠĠ Ġval Ġdefault Retry Policy : ĠRetry Policy Ġ= Ġretry Policy ( properties . local Service . retry Policy . default ) ĊĠĠĠ Ġval Ġper Method Retry Policies : ĠMap < HttpMethod , ĠRetry Policy > Ġ= Ġproperties . local Service . retry Policy . per HttpMethod ĊĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġit . value . enabled Ġ} ĊĠĠĠĠĠĠĠ Ġ. map Ġ{ ĠHttpMethod . valueOf ( it . key ) Ġto Ġretry Policy ( it . value ) Ġ} ĊĠĠĠĠĠĠĠ Ġ. toMap () ĊĊĠĠĠ Ġprivate Ġfun Ġall Open Ingress Routes ( local Route Action : ĠRoute Action . Builder ): ĠList < Route > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġnon Retry Route Ġ= ĠRoute . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Match ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRoute Match . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Prefix ("/") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Route ( local Route Action ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠ Ġval Ġretry Routes Ġ= Ġper Method Retry Policies ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġ( method , Ġretry Policy ) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRoute . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Match ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRoute Match . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Headers ( http Method Matcher ( method )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Prefix ("/") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Route ( cluster Route Action With Retry Policy ( retry Policy , Ġlocal Route Action )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġretry Routes Ġ+ Ġnon Retry Route ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcustom HealthCheck Route ( proxy Settings : ĠProxy Settings ): ĠList < Route > Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( proxy Settings . incoming . health Check . has Custom HealthCheck ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhealth Check Route Action Ġ= Ġcluster Route Action ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproxy Settings . incoming . timeout Policy . response Timeout , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproxy Settings . incoming . timeout Policy . idle Timeout , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproxy Settings . incoming . health Check . cluster Name ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠlistOf ( Route . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Match ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRoute Match . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Prefix ( proxy Settings . incoming . health Check . path ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Headers ( http Method Matcher ( HttpMethod . GET )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Route ( health Check Route Action ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġempty List () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġlocal Cluster Route Action With Retry Policy ( method : ĠHttpMethod , Ġlocal Route Action : ĠRoute Action . Builder ): ĊĠĠĠĠĠĠĠ ĠRoute Action . Builder Ġ= Ġper Method Retry Policies [ method ] ĊĠĠĠĠĠĠĠ Ġ? . let Ġ{ Ġcluster Route Action With Retry Policy ( it , Ġlocal Route Action ) Ġ} ĊĠĠĠĠĠĠĠ Ġ?: Ġlocal Route Action ĊĊĠĠĠ Ġprivate Ġfun Ġcluster Route Action With Retry Policy ( ĊĠĠĠĠĠĠĠ Ġretry Policy : ĠRetry Policy , ĊĠĠĠĠĠĠĠ Ġroute Action : ĠRoute Action . Builder ĊĠĠĠ Ġ) Ġ= Ġroute Action . clone (). set Retry Policy ( retry Policy ) ĊĊĠĠĠ Ġfun Ġcreate Sec ured Ingress Route Config ( proxy Settings : ĠProxy Settings ): ĠRoute Configuration Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġvirtual Clusters Ġ= Ġwhen Ġ( status Route Virtual Cluster Enabled ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVirtual Cluster . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Pattern ( status Path Pattern ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setName (" status ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVirtual Cluster . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Pattern ("/ .* ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setName (" endpoints ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfalse Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġempty List () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġadmin Routes Factory Ġ= ĠAdmin Routes Factory ( properties . routes ) ĊĊĠĠĠĠĠĠĠ Ġval Ġvirtual Host Ġ= ĠVirtual Host . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setName (" sec ured _ local _ service ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Domains ("* ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. addAll Virtual Clusters ( virtual Clusters ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. addAll Routes ( admin Routes Factory . generate Admin Routes ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. addAll Routes ( generate Sec ured Ingress Routes ( proxy Settings )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( properties . local Service . retry Policy . default . enabled ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . retry Policy Ġ= Ġdefault Retry Policy ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠRoute Configuration . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setName (" ingress _ sec ured _ routes ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Virtual Hosts ( virtual Host ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġgenerate Sec ured Ingress Routes ( proxy Settings : ĠProxy Settings ): ĠList < Route > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlocal Route Action Ġ= Ġcluster Route Action ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproxy Settings . incoming . timeout Policy . response Timeout , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproxy Settings . incoming . timeout Policy . idle Timeout ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġcustom HealthCheck Route Ġ= Ġcustom HealthCheck Route ( proxy Settings ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ(! proxy Settings . incoming . permissions Enabled ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġcustom HealthCheck Route Ġ+ Ġall Open Ingress Routes ( local Route Action ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġroles ByName Ġ= Ġproxy Settings . incoming . roles . associate By Ġ{ Ġit . name . or Empty () Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġapplication Routes Ġ= Ġproxy Settings . incoming . endpoints ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. flatMap Ġ{ Ġto Routes ( it , Ġroles ByName , Ġlocal Route Action ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġcustom HealthCheck Route Ġ+ ĠlistOf NotNull ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstatus Route ( local Route Action ). take If Ġ{ Ġproperties . routes . status . enabled Ġ} ĊĠĠĠĠĠĠĠ Ġ) Ġ+ Ġapplication Routes Ġ+ Ġfallback Ingress Route ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġto Routes ( ĊĠĠĠĠĠĠĠ Ġendpoint : ĠIncoming Endpoint , ĊĠĠĠĠĠĠĠ Ġroles : ĠMap < String , ĠRole >, ĊĠĠĠĠĠĠĠ Ġlocal Route Action : ĠRoute Action . Builder ĊĠĠĠ Ġ): ĠList < Route > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġroute Match Ġ= ĠRoute Match . newBuilder () ĊĊĠĠĠĠĠĠĠ Ġwhen Ġ( endpoint . path Matching Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPath Matching Type . PATH Ġ-> Ġroute Match . path Ġ= Ġendpoint . path ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPath Matching Type . PATH _ PREFIX Ġ-> Ġroute Match . prefix Ġ= Ġendpoint . path ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġclients Ġ= Ġendpoint . clients ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. flatMap Ġ{ Ġroles [ it ]?. clients Ġ?: ĠlistOf ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. distinct () ĊĊĠĠĠĠĠĠĠ Ġval Ġmethods Ġ= Ġendpoint . methods ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. take If Ġ{ Ġit . isNotEmpty () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ? . map Ġ{ ĠHttpMethod . valueOf ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġper Method Retry Policies . keys ĊĊĠĠĠĠĠĠĠ Ġreturn Ġclients . flatMap Ġ{ Ġclient Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġroutes For Methods Ġ= Ġmethods . map Ġ{ Ġmethod Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmatch Ġ= Ġroute Match . clone () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Headers ( client Name Matcher ( client )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Headers ( http Method Matcher ( method )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRoute . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Match ( match ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Route ( local Cluster Route Action With Retry Policy ( method , Ġlocal Route Action )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( endpoint . methods . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmatch Ġ= Ġroute Match . clone () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Headers ( client Name Matcher ( client )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroutes For Methods Ġ+ ĠRoute . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Match ( match ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Route ( local Route Action ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġroutes For Methods ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġclient Name Matcher ( client Name : ĠString ): ĠHeader Matcher . Builder Ġ= ĊĠĠĠĠĠĠĠ ĠHeader Matcher . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setName ( properties . incoming Permissions . client Identity Header ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Exact Match ( client Name ) ĊĊĠĠĠ Ġprivate Ġfun Ġstatus Route Virtual Cluster Enabled () Ġ= ĊĠĠĠĠĠĠĠ Ġproperties . routes . status . enabled Ġ&& Ġproperties . routes . status . create Virtual Cluster Ċ } Ċ