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

Reply via email to