commit 8e007b3229377dafaece1b67a343c3a6c6b4373f
Merge: 141a836 39564fc
Author: Klaus Aehlig <[email protected]>
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]>
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