package Ġcom . github . ker ub istan . ker ub . planner . steps . storage . mount Ċ Ċ import Ġcom . github . ker ub istan . ker ub . model . Expectation Ċ import Ġcom . github . ker ub istan . ker ub . model . dynamic . Virtual Storage Fs Allocation Ċ import Ġcom . github . ker ub istan . ker ub . model . services . N fs Mount Ċ import Ġcom . github . ker ub istan . ker ub . planner . Operation al State Ċ import Ġcom . github . ker ub istan . ker ub . planner . issues . problems . Problem Ċ import Ġcom . github . ker ub istan . ker ub . planner . steps . Abstract Operation al Step Factory Ċ import Ġcom . github . ker ub istan . ker ub . utils . normalize Path Ċ import Ġio . github . ker ub istan . k ro ki . collections . concat Ċ import Ġkotlin . reflect . K Class Ċ Ċ object ĠUn mount N fs Factory Ġ: ĠAbstract Operation al Step Factory < Unmount N fs >() Ġ{ ĊĊ ĉ override Ġval Ġproblem Hints Ġ= Ġset Of < K Class < out ĠProblem >>() Ċ ĉ override Ġval Ġexpectation Hints Ġ= Ġset Of < K Class < out ĠExpect ation >>() ĊĊ ĉ override Ġfun Ġproduce ( state : ĠOperation al State ): ĠList < Unmount N fs > Ġ{ Ċĉ ĉ return Ġstate . hosts . values . map NotNull Ġ{ Ġhost Coll Ġ-> Ċĉĉ ĉ val Ġstorage Ġ= Ġstate . vms On Host ( host Coll . stat . id ). map Ġ{ Ġit . virtual Storage Links Ġ}. concat () Ċĉĉĉĉ ĉ . map NotNull Ġ{ Ġstate . v Storage [ it . virtual Storage Id ] Ġ} Ċĉĉ ĉ host Coll . config ?. services ?. filter Is Instance < N fs Mount >() ?. filter Ġ{ Ċĉĉĉ ĉ storage . none Ġ{ Ċĉĉĉĉ ĉ it . dynamic ?. alloc ations ?. any Ġ{ Ċĉĉĉĉĉ ĉ it Ġis ĠVirtual Storage Fs Allocation Ġ&& Ġit . host Id Ġ!= Ġhost Coll . stat . id Ċĉĉĉĉ ĉ } Ġ?: Ġfalse Ċĉĉĉ ĉ } Ċĉĉ ĉ } ?. map Ġ{ Ċĉĉĉ ĉ Unmount N fs ( host Ġ= Ġhost Coll . stat , Ġmount Dir Ġ= Ġit . local Directory . normalize Path ()) Ċĉĉ ĉ } Ċĉ ĉ }. concat () ĊĊ ĉ } Ċ }