LGTM
On Thu, Dec 3, 2015 at 11:42 AM 'Klaus Aehlig' via ganeti-devel <
[email protected]> wrote:

> Add a --dry-run option to harep, so that users can verify
> that the actions taken by harep are the ones they want.
>
> Signed-off-by: Klaus Aehlig <[email protected]>
> ---
>  src/Ganeti/HTools/Program/Harep.hs | 21 ++++++++++++++++++---
>  1 file changed, 18 insertions(+), 3 deletions(-)
>
> diff --git a/src/Ganeti/HTools/Program/Harep.hs
> b/src/Ganeti/HTools/Program/Harep.hs
> index 54628b0..8ad7deb 100644
> --- a/src/Ganeti/HTools/Program/Harep.hs
> +++ b/src/Ganeti/HTools/Program/Harep.hs
> @@ -48,6 +48,7 @@ import Data.Maybe
>  import Data.Ord
>  import System.Time
>  import qualified Data.Map as Map
> +import qualified Text.JSON as J
>
>  import Ganeti.BasicTypes
>  import Ganeti.Common
> @@ -84,6 +85,7 @@ options = do
>      [ luxi
>      , oJobDelay
>      , oReason
> +    , oDryRun
>      ]
>
>  arguments :: [ArgCompletion]
> @@ -288,7 +290,7 @@ commitChange opts client instData = do
>    let iname = Instance.name $ arInstance instData
>        arData = getArData $ arState instData
>        rmTags = tagsToRemove instData
> -      execJobsWaitOk' opcodes = do
> +      execJobsWaitOk' opcodes = unless (optDryRun opts) $ do
>          res <- execJobsWaitOk
>                   [map (annotateOpCode (optReason opts) now) opcodes]
> client
>          case res of
> @@ -401,6 +403,17 @@ detectBroken nl inst =
>       _ -> Nothing  -- Other cases are unimplemented for now: DTDiskless,
>                     -- DTFile, DTSharedFile, DTBlock, DTRbd, DTExt.
>
> +-- | Submit jobs, unless a dry-run is requested; in this case, just report
> +-- the job that would be submitted.
> +submitJobs' :: Options -> [[MetaOpCode]] -> L.Client -> IO (Result
> [JobId])
> +submitJobs' opts jobs client =
> +  if optDryRun opts
> +    then do
> +      putStrLn . (++) "jobs: " . J.encode $ map (map metaOpCode) jobs
> +      return $ Ok []
> +    else
> +      submitJobs jobs client
> +
>  -- | Perform the suggested repair on an instance if its policy allows it.
>  doRepair :: Options
>           -> L.Client     -- ^ The Luxi client
> @@ -467,8 +480,10 @@ doRepair opts client delay instData (rtype, opcodes) =
>
>          uuid <- newUUID
>          time <- getClockTime
> -        jids <- submitJobs [map (annotateOpCode (optReason opts) now)
> opcodes']
> -                           client
> +        jids <- submitJobs'
> +                  opts
> +                  [map (annotateOpCode (optReason opts) now) opcodes']
> +                  client
>
>          case jids of
>            Bad e    -> exitErr e
> --
> 2.6.0.rc2.230.g3dd15c0
>
> --
Lisa Velden
Software Engineer
[email protected]

Google Germany GmbH
Dienerstraße 12
80331 München

Geschäftsführer: Matthew Scott Sucherman, Paul Terence Manicle
Registergericht und -nummer: Hamburg, HRB 86891
Sitz der Gesellschaft: Hamburg

Reply via email to