LGTM

On Tue, Jun 03, 2014 at 12:33:32PM +0200, 'Klaus Aehlig' via ganeti-devel wrote:
> ...so that other daemons can use this functionality as well, without
> the need to duplicate code.
> 
> Signed-off-by: Klaus Aehlig <[email protected]>
> ---
>  src/Ganeti/Daemon/Utils.hs | 25 ++++++++++++++++++++++++-
>  src/Ganeti/Query/Server.hs | 19 ++-----------------
>  2 files changed, 26 insertions(+), 18 deletions(-)
> 
> diff --git a/src/Ganeti/Daemon/Utils.hs b/src/Ganeti/Daemon/Utils.hs
> index 1f86e51..0d537a8 100644
> --- a/src/Ganeti/Daemon/Utils.hs
> +++ b/src/Ganeti/Daemon/Utils.hs
> @@ -25,6 +25,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 
> MA
>  
>  module Ganeti.Daemon.Utils
>    ( verifyMaster
> +  , handleMasterVerificationOptions
>    ) where
>  
>  import Control.Concurrent (threadDelay)
> @@ -32,11 +33,12 @@ import Control.Monad (unless)
>  import Data.Either (rights)
>  import qualified Data.Foldable as F
>  import Data.List (partition)
> +import System.Exit (ExitCode(..))
>  
>  import Ganeti.BasicTypes
>  import qualified Ganeti.Config as Config
>  import qualified Ganeti.Constants as C
> -import Ganeti.Daemon (getFQDN)
> +import Ganeti.Daemon (getFQDN, DaemonOptions, optNoVoting, optYesDoIt)
>  import Ganeti.Logging
>  import Ganeti.Objects
>  import qualified Ganeti.Path as Path
> @@ -83,3 +85,24 @@ verifyMaster retries = runResultT $ do
>          liftIO $ logDebug "Voting not final due to missing votes."
>          liftIO . threadDelay $ C.masterVotingRetryIntervall * 1000000
>          mkResultT $ verifyMaster (retries - 1)
> +
> +-- | Verify master position according to the options provided, usually
> +-- by carrying out a voting. Either return unit on success, or a suggested
> +-- exit code.
> +handleMasterVerificationOptions :: DaemonOptions -> IO (Either ExitCode ())
> +handleMasterVerificationOptions opts =
> +  if optNoVoting opts
> +    then if optYesDoIt opts
> +           then return $ Right ()
> +           else do
> +             logError "The no-voting option is dangerous and cannot be\
> +                      \ given without providing yes-do-it as well."
> +             return . Left $ ExitFailure C.exitFailure
> +    else do
> +      masterStatus <- verifyMaster C.masterVotingRetries
> +      case masterStatus of
> +        Bad s -> do
> +          logError $ "Failed to verify master status: " ++ s
> +          return . Left $ ExitFailure C.exitFailure
> +        Ok _ -> return $ Right ()
> +
> diff --git a/src/Ganeti/Query/Server.hs b/src/Ganeti/Query/Server.hs
> index 70b1574..bddcd06 100644
> --- a/src/Ganeti/Query/Server.hs
> +++ b/src/Ganeti/Query/Server.hs
> @@ -44,7 +44,6 @@ import qualified Text.JSON as J
>  import Text.JSON (encode, showJSON, JSValue(..))
>  import System.Info (arch)
>  import System.Directory
> -import System.Exit (ExitCode(..))
>  import System.Posix.Signals as P
>  
>  import qualified Ganeti.Constants as C
> @@ -52,7 +51,7 @@ import qualified Ganeti.ConstantUtils as ConstantUtils 
> (unFrozenSet)
>  import Ganeti.Errors
>  import qualified Ganeti.Path as Path
>  import Ganeti.Daemon
> -import Ganeti.Daemon.Utils (verifyMaster)
> +import Ganeti.Daemon.Utils (handleMasterVerificationOptions)
>  import Ganeti.Objects
>  import qualified Ganeti.Config as Config
>  import Ganeti.ConfigReader
> @@ -449,21 +448,7 @@ activateMasterIP = runResultT $ do
>  
>  -- | Check function for luxid.
>  checkMain :: CheckFn ()
> -checkMain opts =
> -  if optNoVoting opts
> -    then if optYesDoIt opts
> -           then return $ Right ()
> -           else do
> -             logError "The no-voting option is dangerous and cannot be\
> -                      \ given without providing yes-do-it as well."
> -             return . Left $ ExitFailure C.exitFailure
> -    else do
> -      masterStatus <- verifyMaster C.masterVotingRetries
> -      case masterStatus of
> -        Bad s -> do
> -          logError $ "Failed to verify master status: " ++ s
> -          return . Left $ ExitFailure C.exitFailure
> -        Ok _ -> return $ Right ()
> +checkMain = handleMasterVerificationOptions
>  
>  -- | Prepare function for luxid.
>  prepMain :: PrepFn () PrepResult
> -- 
> 1.9.1.423.g4596e3a
> 

Reply via email to