Statistics
| Branch: | Tag: | Revision:

root / htools / Ganeti / Query @ f94a9680

Name Size
Common.hs 5.6 kB
Filter.hs 8.7 kB
Group.hs 3.4 kB
Language.hs 15.2 kB
Node.hs 8.5 kB
Query.hs 8.6 kB
Server.hs 9.4 kB
Types.hs 2.5 kB

Latest revisions

# Date Author Comment
f94a9680 12/19/2012 03:37 pm Iustin Pop

Implement support for QFF_SPLIT_TIMESTAMP

I am very very unhappy with this patch. We have to do this, in order
to be compatible with the Python code and behaviour, but there's lots
of duplication; both the Python and the Haskell code will need to be
cleaned up and simplified (we don't need QFF_* at all)....

13b17073 12/17/2012 01:38 pm Iustin Pop

Add NFData instances for query results

This allows us to ensure that query results are strict as we build
them, instead of being lazy and only evaluated when the reply is sent
over the Luxi interface.

Signed-off-by: Iustin Pop <>
Reviewed-by: Helga Velroyen <>

a1d137f6 12/17/2012 01:29 pm Iustin Pop

Simplify a bit the FilterRegex JSON instance

Signed-off-by: Iustin Pop <>
Reviewed-by: Helga Velroyen <>

ad1c1e41 12/17/2012 01:29 pm Iustin Pop

Implement opcode summary support

This implements in the Haskell codebase the opcode summary. As opposed
to Python, we always use custom code for formatting, since we don't
want to use dynamic attribute lookup.

To test this properly, we need to change MetaOpCode to record-syntax,...

f74b88fa 12/13/2012 07:47 pm Iustin Pop

Log only partial response in Luxi when in debug mode

Currently, we log the entire response (at debug level) in the Luxi
replies. This is not a good idea; the logging library operates on
strings, and as such it will use huge amounts of memory: without debug...

d277b075 11/30/2012 04:17 pm Iustin Pop

Optimise recursive Query filters

Currently, the And and Or filters use very nice code, e.g. in case of
OrFilter:

any id <$> mapM evaluateFilter flts

However, looking at the memory profiles shows that application of
any/id to monadic values via '<$>' does not work nicely, losing the...

228ef0f2 11/30/2012 04:17 pm Iustin Pop

Make Query operators enforce strictness

Currently, the query operators (binop, etc.) create thunks, instead of
forcing the evaluation of the simple boolean results. This results in
higher than needed memory use.

Signed-off-by: Iustin Pop <>...

139c0683 11/30/2012 03:54 pm Iustin Pop

Remove read instances from our Haskell code

It turns out that optimising 'read' derived instances (via -O) for
complex data types (like OpCode, or the various objects) can be slow
to very slow. Disabling such instances results in (time make
$all_our_haskell_binaries) large compile-time savings and also smaller...

1283cc38 11/21/2012 03:51 pm Iustin Pop

Split 'Query.Language.ItemType' in two sub-types

The QR_VIA_OP/QR_VIA_LUXI types in Python are using yet another
validation mode: QR_VIA_OP is the base type, and QR_VIA_LUXI extends
it (when doing luxi queries). But on the wire they have the same
representation....

51d991d7 11/20/2012 11:26 am Iustin Pop

Fix docstrings for the Filter type

While looking at the opcode docs and clicking accidentally on the
filter type, I saw that the haddock formatting is broken due to
non-escaped use of special chars. Let's convert the ascii-like
formatting to haddock, and have nicer apidoc....

View revisions

Also available in: Atom