package Ġcom . github . ker ub istan . ker ub . planner . steps . host . security . remove Ċ Ċ import Ġcom . fasterxml . jackson . annotation . Json TypeName Ċ import Ġcom . github . ker ub istan . ker ub . model . Host Ċ import Ġcom . github . ker ub istan . ker ub . planner . Operation al State Ċ import Ġcom . github . ker ub istan . ker ub . planner . re servations . Reservation Ċ import Ġcom . github . ker ub istan . ker ub . planner . re servations . Use Host Reservation Ċ import Ġcom . github . ker ub istan . ker ub . planner . steps . Abstract Operation al Step Ċ import Ġcom . github . ker ub istan . ker ub . planner . steps . Invert ible Step Ċ import Ġcom . github . ker ub istan . ker ub . planner . steps . host . security . install . Install PublicKey Ċ import Ġio . github . ker ub istan . k ro ki . collections . update Ċ Ċ @ Json TypeName (" remove - public - key ") Ċ data Ġclass ĠRemove PublicKey ( val Ġhost Of Key : ĠHost , Ġval Ġhost : ĠHost , Ġval ĠpublicKey : ĠString ) Ġ: ĠAbstract Operation al Step , Ċĉ ĉ Invert ible Step Ġ{ Ċ ĉ override Ġfun Ġis Inverse Of ( other : ĠAbstract Operation al Step ): ĠBoolean Ġ= Ċĉĉ ĉ other Ġis ĠInstall PublicKey Ġ&& Ġother . target Host Ġ== Ġhost Ġ&& Ġother . publicKey Ġ== ĠpublicKey ĊĊ ĉ override Ġfun Ġtake ( state : ĠOperation al State ): ĠOperation al State Ġ= Ġstate . copy ( Ċĉĉ ĉ hosts Ġ= Ġstate . hosts . update ( host . id ) Ġ{ Ġcoll Ġ-> Ċĉĉĉ ĉ coll . copy ( Ċĉĉĉĉĉ ĉ config Ġ= Ġcoll . config ?. let Ġ{ Ġit . copy ( accepted Public Keys Ġ= Ġit . accepted Public Keys Ġ- ĠpublicKey ) Ġ} Ċĉĉĉ ĉ ) Ċĉĉ ĉ } Ċ ĉ ) ĊĊ ĉ override Ġfun Ġre servations (): ĠList < Reservation <* >> Ġ= ĠlistOf ( Use Host Reservation ( host )) Ċ }