On Thu, Nov 7, 2013 at 1:20 PM, Klaus Aehlig <[email protected]> wrote:
> When queueing many jobs, the dependencies between them need to
> be resolved with the knowledge of their respective job id.
> Lift the computation of the absolute dependency to the level
> of MetaOpCodes.
>
> Signed-off-by: Klaus Aehlig <[email protected]>
> ---
>  src/Ganeti/OpCodes.hs | 14 ++++++++++++++
>  1 file changed, 14 insertions(+)
>
> diff --git a/src/Ganeti/OpCodes.hs b/src/Ganeti/OpCodes.hs
> index 82f457f..c1b3048 100644
> --- a/src/Ganeti/OpCodes.hs
> +++ b/src/Ganeti/OpCodes.hs
> @@ -40,6 +40,7 @@ module Ganeti.OpCodes
>    , CommonOpParams(..)
>    , defOpParams
>    , MetaOpCode(..)
> +  , resolveDependencies
>    , wrapOpCode
>    , setOpComment
>    , setOpPriority
> @@ -1032,11 +1033,24 @@ defOpParams =
>                   , opReason     = []
>                   }
>
> +-- | Resolve relative dependencies to absolute ones, given the job ID.
> +resolveDepends :: (Monad m) => CommonOpParams -> JobId -> m CommonOpParams

Looking at the name it's not clear that this function is just a helper
for the resolveDependencies one, nor whether one should use
resolveDepends or resolveDependencies, until one goes and looks at the
names of the exported functions.

What about naming it resolveDepHelper, or resolveDepCommon, to make it
more clear what it actually does?

> +resolveDepends p@(CommonOpParams { opDepends = Just deps}) jid = do
> +  deps' <- mapM (`absoluteJobDependency` jid) deps
> +  return p { opDepends = Just deps' }
> +resolveDepends p _ = return p
> +
>  -- | The top-level opcode type.
>  data MetaOpCode = MetaOpCode { metaParams :: CommonOpParams
>                               , metaOpCode :: OpCode
>                               } deriving (Show, Eq)
>
> +-- | Resolve relative dependencies to absolute ones, given the job Id.
> +resolveDependencies :: (Monad m) => MetaOpCode -> JobId -> m MetaOpCode
> +resolveDependencies mopc jid = do
> +  mpar <- resolveDepends (metaParams mopc) jid
> +  return (mopc { metaParams = mpar })
> +
>  -- | JSON serialisation for 'MetaOpCode'.
>  showMeta :: MetaOpCode -> JSValue
>  showMeta (MetaOpCode params op) =
> --
> 1.8.4.1
>



-- 
Google Germany GmbH
Dienerstr. 12
80331 München

Registergericht und -nummer: Hamburg, HRB 86891
Sitz der Gesellschaft: Hamburg
Geschäftsführer: Graham Law, Christine Elizabeth Flores

Reply via email to