/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 2 0 ĠRe ece ĠH . ĠD un n Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ package Ġuk . co . re ec ed un n . intellij . plugin . processor . query . connection Ċ Ċ import Ġcom . google . gson . Json Parser Ċ import Ġcom . intellij . credential Store . Credential Attributes Ċ import Ġcom . intellij . credential Store . Credentials Ċ import Ġcom . intellij . execution . configurations . General CommandLine Ċ import Ġcom . intellij . ide . password Safe . Password Safe Ċ import Ġcom . intellij . util . System Properties Ċ import Ġuk . co . re ec ed un n . intellij . plugin . core . io . decode Ċ Ċ data Ġclass ĠAWS Connection Settings ( ĊĠĠĠ Ġvar Ġapplication : ĠString , ĊĠĠĠ Ġvar Ġprofile : ĠString , ĊĠĠĠ Ġvar Ġregion : ĠString , ĊĠĠĠ Ġvar Ġinstance Name : ĠString , ĊĠĠĠ Ġoverride Ġvar Ġdatabase Port : ĠInt , ĊĠĠĠ Ġoverride Ġvar Ġusername : ĠString ? Ċ ) Ġ: ĠInstance Details Ġ{ ĊĠĠĠ Ġ@ Suppress (" unused ") ĊĠĠĠ Ġconstructor () Ġ: Ġthis ("", Ġ"", Ġ"", Ġ"", Ġ 0 , Ġnull ) ĊĊĠĠĠ Ġ// Ġregion Ġhostname ĊĊĠĠĠ Ġprivate Ġval Ġaws CommandLine : ĠGeneral CommandLine ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcommand Line Ġ= ĠGeneral CommandLine () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcommand Line . set Work Directory ( System Properties . getUser Home ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcommand Line . exe Path Ġ= Ġapplication ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcommand Line . add Parameter (" ec 2 ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcommand Line . add Parameter ("-- profile ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcommand Line . add Parameter ( profile ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcommand Line . add Parameter ("-- region ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcommand Line . add Parameter ( region ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġcommand Line ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġval Ġhostname : ĠString Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġaws Ġ= Ġaws CommandLine ĊĠĠĠĠĠĠĠ Ġaws . add Parameter (" describe - instances ") ĊĠĠĠĠĠĠĠ Ġaws . add Parameter ("-- filters ") ĊĠĠĠĠĠĠĠ Ġaws . add Parameter (" Name = tag : Name , Values =$ instance Name ") ĊĠĠĠĠĠĠĠ Ġaws . add Parameter ("-- query ") ĊĠĠĠĠĠĠĠ Ġaws . add Parameter (" Reser v ations [* ]. Instances [* ]. Private IpAddress ") ĊĊĠĠĠĠĠĠĠ Ġval Ġprocess Ġ= Ġaws . create Process () ĊĠĠĠĠĠĠĠ Ġval Ġout Ġ= Ġprocess . inputStream . decode (). trim () ĊĠĠĠĠĠĠĠ Ġval Ġerr Ġ= Ġprocess . error Stream . decode (). trim () ĊĠĠĠĠĠĠĠ Ġif Ġ( err . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠAWS Client Error ( err ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġresults Ġ= ĠJson Parser . parse String ( out ). as JsonArray . map NotNull Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaddresses Ġ= Ġit . as JsonArray ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( addresses . size () Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull Ġ// ĠNo Ġaddresses Ġfound Ġfor Ġthis Ġinstance . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaddresses . get ( 0 ). asString ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġresults . first OrNull () Ġ?: Ġthrow ĠAWS Client Error (" No Ġinstances Ġfound ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġend region ĊĠĠĠ Ġ// Ġregion Ġpassword ĊĊĠĠĠ Ġprivate Ġval ĠserviceName : ĠString ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ" uk . co . re ec ed un n . intellij . plugin . processor : Ġaws :$ region :$ instance Name :$ database Port " ĊĊĠĠĠ Ġoverride Ġval Ġpassword : ĠString ? ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcredential Attributes Ġ= ĠCredential Attributes ( serviceName , Ġusername ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠPassword Safe . instance . get ( credential Attributes )?. getPassword AsString () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset Password ( password : ĠChar Array ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcredential Attributes Ġ= ĠCredential Attributes ( serviceName , Ġusername ) ĊĠĠĠĠĠĠĠ ĠPassword Safe . instance . set ( credential Attributes , Ġpassword ?. let Ġ{ ĠCredentials ( username , Ġit ) Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġend region Ċ } Ċ