On Fri, Dec 10, 2010 at 5:34 PM, Michael Hanselmann <[email protected]> wrote:
> … and use them in cmdlib.
> ---
>  lib/cmdlib.py  |   11 +++--------
>  lib/objects.py |   29 +++++++++++++++++++++++++----
>  2 files changed, 28 insertions(+), 12 deletions(-)
>
> diff --git a/lib/cmdlib.py b/lib/cmdlib.py
> index 2dda843..ed4faff 100644
> --- a/lib/cmdlib.py
> +++ b/lib/cmdlib.py
> @@ -550,9 +550,7 @@ class _QueryBase:
>     else:
>       fdefs = query.Query(cls.FIELDS, fields).GetFields()
>
> -    return {
> -      "fields": [fdef.ToDict() for fdef in fdefs],
> -      }
> +    return objects.QueryFieldsResponse(fields=fdefs).ToDict()
>
>   def ExpandNames(self, lu):
>     """Expand names for this query.
> @@ -584,11 +582,8 @@ class _QueryBase:
>     """
>     data = self._GetQueryData(lu)
>
> -    return {
> -      "data": self.query.Query(data),
> -      "fields": [fdef.ToDict()
> -                 for fdef in self.query.GetFields()],
> -      }
> +    return objects.QueryResponse(data=self.query.Query(data),
> +                                 fields=self.query.GetFields()).ToDict()
>
>   def OldStyleQuery(self, lu):
>     """Collect data and execute query.
> diff --git a/lib/objects.py b/lib/objects.py
> index 06a8dc2..62b749c 100644
> --- a/lib/objects.py
> +++ b/lib/objects.py
> @@ -1392,6 +1392,29 @@ class QueryFieldDefinition(ConfigObject):
>     ]
>
>
> +class _QueryResponseBase(ConfigObject):
> +  __slots__ = [
> +    "fields",
> +    ]
> +
> +  def ToDict(self):
> +    """Custom function for serializing.
> +
> +    """
> +    mydict = super(_QueryResponseBase, self).ToDict()
> +    mydict["fields"] = self._ContainerToDicts(mydict["fields"])
> +    return mydict
> +
> + �...@classmethod
> +  def FromDict(cls, val):
> +    """Custom function for de-serializing.
> +
> +    """
> +    obj = super(_QueryResponseBase, cls).FromDict(val)
> +    obj.fields = cls._ContainerFromDicts(obj.fields, list, 
> QueryFieldDefinition)
> +    return obj
> +
> +
>  class QueryRequest(ConfigObject):
>   """Object holding a query request.
>
> @@ -1403,7 +1426,7 @@ class QueryRequest(ConfigObject):
>     ]
>
>
> -class QueryResponse(ConfigObject):
> +class QueryResponse(_QueryResponseBase):
>   """Object holding the response to a query.
>
>   @ivar fields: List of L{QueryFieldDefinition} objects
> @@ -1411,7 +1434,6 @@ class QueryResponse(ConfigObject):
>
>   """
>   __slots__ = [
> -    "fields",
>     "data",
>     ]
>
> @@ -1426,14 +1448,13 @@ class QueryFieldsRequest(ConfigObject):
>     ]
>
>
> -class QueryFieldsResponse(ConfigObject):
> +class QueryFieldsResponse(_QueryResponseBase):
>   """Object holding the response to a query for fields.
>
>   @ivar fields: List of L{QueryFieldDefinition} objects
>
>   """
>   __slots__ = [
> -    "fields",
>     ]
>
>
> --
> 1.7.3.1

LGTM

>
>

Reply via email to