LGTM
On Monday, February 15, 2016 at 10:39:38 AM UTC, Klaus Aehlig wrote: > > > commit 8e007b3229377dafaece1b67a343c3a6c6b4373f > Merge: 141a836 39564fc > Author: Klaus Aehlig <[email protected] <javascript:>> > Date: Mon Feb 15 11:23:12 2016 +0100 > > Merge branch 'stable-2.16' into stable-2.17 > > * stable-2.16 > On group verify, only flush to group nodes > Support flushing to a single group > Make config distribution parametric in target group > > Conflicts: > src/Ganeti/WConfd/Core.hs: take all additions > > Signed-off-by: Klaus Aehlig <[email protected] <javascript:>> > > diff --cc src/Ganeti/WConfd/ConfigWriter.hs > index 92fbf34,8ffbc13..ccd562b > --- a/src/Ganeti/WConfd/ConfigWriter.hs > +++ b/src/Ganeti/WConfd/ConfigWriter.hs > @@@ -43,16 -43,13 +43,17 @@@ module Ganeti.WConfd.ConfigWrite > , distSSConfAsyncTask > ) where > > -import Control.Applicative > +import Prelude () > +import Ganeti.Prelude > + > +import Control.Monad ((>=>), liftM, unless) > import Control.Monad.Base > -import Control.Monad.Error > +import Control.Monad.Error.Class (MonadError) > import qualified Control.Monad.State.Strict as S > +import Control.Monad.Trans.Class (lift) > import Control.Monad.Trans.Control > import Data.Monoid > + import qualified Data.Set as Set > > import Ganeti.BasicTypes > import Ganeti.Errors > diff --cc src/Ganeti/WConfd/Core.hs > index 4f34dbd,73dba45..88ecafa > --- a/src/Ganeti/WConfd/Core.hs > +++ b/src/Ganeti/WConfd/Core.hs > @@@ -163,32 -158,13 +163,37 @@@ writeConfigAndUnlock cid cdata = d > -- | Force the distribution of configuration without actually modifying > it. > -- It is not necessary to hold a lock for this operation. > flushConfig :: WConfdMonad () > - flushConfig = forceConfigStateDistribution > + flushConfig = forceConfigStateDistribution Everywhere > + > + -- | Force the distribution of configuration to a given group without > actually > + -- modifying it. It is not necessary to hold a lock for this operation. > + flushConfigGroup :: String -> WConfdMonad () > + flushConfigGroup = forceConfigStateDistribution . ToGroups . S.singleton > > +-- *** Access to individual parts of the configuration > + > +-- | Get the configurable value of the maintenance interval > +maintenanceRoundDelay :: WConfdMonad Int > +maintenanceRoundDelay = liftM ( maintRoundDelay . configMaintenance ) > + CW.readConfig > + > +-- | Get the list of jobs in the state of the maintenance daemon. > +maintenanceJobs :: WConfdMonad [JobId] > +maintenanceJobs = liftM ( maintJobs . configMaintenance ) CW.readConfig > + > +-- | Get the information related to balancing for the maintenance > daemon. > +maintenanceBalancing :: WConfdMonad (Bool, Double) > +maintenanceBalancing = liftM ((maintBalance &&& maintBalanceThreshold) > + . configMaintenance) CW.readConfig > + > +-- | Get the list of recently evacuated instances. > +maintenanceEvacuated :: WConfdMonad [String] > +maintenanceEvacuated = liftM (maintEvacuated . configMaintenance) > CW.readConfig > + > +-- | Get the list of current incidents. > +maintenanceIncidents :: WConfdMonad [Incident] > +maintenanceIncidents = liftM (maintIncidents . configMaintenance) > CW.readConfig > + > -- ** Temporary reservations related functions > > dropAllReservations :: ClientId -> WConfdMonad () > @@@ -419,11 -395,7 +424,12 @@@ exportedFunctions = [ 'ech > , 'unlockConfig > , 'writeConfigAndUnlock > , 'flushConfig > + , 'flushConfigGroup > + , 'maintenanceRoundDelay > + , 'maintenanceJobs > + , 'maintenanceBalancing > + , 'maintenanceEvacuated > + , 'maintenanceIncidents > -- temporary reservations (common) > , 'dropAllReservations > -- DRBD > diff --cc src/Ganeti/WConfd/Monad.hs > index a59320f,fe78e31..b37ab9e > --- a/src/Ganeti/WConfd/Monad.hs > +++ b/src/Ganeti/WConfd/Monad.hs > @@@ -66,11 -66,10 +66,12 @@@ module Ganeti.WConfd.Mona > , modifyTempResState > , modifyTempResStateErr > , readTempResState > + , DistributionTarget(..) > ) where > > -import Control.Applicative > +import Prelude () > +import Ganeti.Prelude > + > import Control.Arrow ((&&&), second) > import Control.Concurrent (forkIO, myThreadId) > import Control.Exception.Lifted (bracket) > -- > Klaus Aehlig > Google Germany GmbH, Erika-Mann-Str. 33, 80636 Muenchen > Registergericht und -nummer: Hamburg, HRB 86891 > Sitz der Gesellschaft: Hamburg > Geschaeftsfuehrer: Matthew Scott Sucherman, Paul Terence Manicle >
