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 > >
