Allow classic queries to use either names or UUIDs
authorHrvoje Ribicic <riba@google.com>
Thu, 6 Feb 2014 09:28:48 +0000 (09:28 +0000)
committerHrvoje Ribicic <riba@google.com>
Fri, 7 Feb 2014 13:42:38 +0000 (14:42 +0100)
commit13ef1fa53e9716e0f01944788572e2f139bf1bf5
tree206e7877542c748ea4c66d79444c114cb4bec008
parentc02b8f91b239c2021e8d4663bd9fa402c794ecfb
Allow classic queries to use either names or UUIDs

When UUIDs are used in CLI commands, such addressing of objects fails
or succeeds inconsistently across object types. Worse yet, some calls
do not fail, but simply return no result. This is due to the way the
classical queries are handled in the Haskell code - a filter is built,
checking if the names match. If the names do not match, but the object
can still be retrieved through UUID, the query is successful, but there
is nothing to return.

This patch remedies the situation by extending the filter into an or
clause checking for either name or uuid. For objects that have no uuid
field, the name is reused, making the filter equivalent to the old one.

Works towards resolving issue 703.

Signed-off-by: Hrvoje Ribicic <riba@google.com>
Reviewed-by: Klaus Aehlig <aehlig@google.com>
src/Ganeti/Query/Query.hs
src/Ganeti/Query/Server.hs