On Fri, Jul 04, 2014 at 01:18:06PM +0200, 'Petr Pudlak' via ganeti-devel wrote: > In particular, for reserving a value given the set of reserved ones, > looking up networks by a UUID and for creating stateful computations. > > Signed-off-by: Petr Pudlak <[email protected]> > --- > src/Ganeti/WConfd/TempRes.hs | 55 > +++++++++++++++++++++++++++++++++----------- > 1 file changed, 41 insertions(+), 14 deletions(-) > > diff --git a/src/Ganeti/WConfd/TempRes.hs b/src/Ganeti/WConfd/TempRes.hs > index 145ca9b..96a3bf9 100644 > --- a/src/Ganeti/WConfd/TempRes.hs > +++ b/src/Ganeti/WConfd/TempRes.hs > @@ -224,17 +224,31 @@ dropReservationsFor jobid = TempRes . MM.deleteAll > jobid . getTempRes > reserved :: (Ord a, Ord j) => TempRes j a -> S.Set a > reserved = MM.values . getTempRes > > +-- | Computes the set of all reserved resources reserved
s/reserved$// > +-- and passes it to the given function. > +-- This allows it to avoid resources that are already in use. > +withReserved :: (MonadError GanetiException m, Show a, Ord a, Ord j) > + => j -> (S.Set a -> m a) -> TempRes j a -> m (a, TempRes j a) > +withReserved jobid genfn tr = do > + x <- genfn (reserved tr) > + (,) x `liftM` reserve jobid x tr Rest LGTM -- Klaus Aehlig Google Germany GmbH, Dienerstr. 12, 80331 Muenchen Registergericht und -nummer: Hamburg, HRB 86891 Sitz der Gesellschaft: Hamburg Geschaeftsfuehrer: Graham Law, Christine Elizabeth Flores
