From c1391810f1fd8798c4eb7245cfdc33dafde93f56 Mon Sep 17 00:00:00 2001 From: Michael Hanselmann <hansmi@google.com> Date: Fri, 11 Mar 2011 14:26:06 +0100 Subject: [PATCH] masterd: Simplify code for field queries MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Instead of going via cmdlib and using special cases for different resources, the list of fields is used directly. Signed-off-by: Michael Hanselmann <hansmi@google.com> Reviewed-by: RenΓ© Nussbaumer <rn@google.com> --- lib/cmdlib.py | 11 +---------- lib/server/masterd.py | 13 ++++--------- 2 files changed, 5 insertions(+), 19 deletions(-) diff --git a/lib/cmdlib.py b/lib/cmdlib.py index 8949c5494..884c957f0 100644 --- a/lib/cmdlib.py +++ b/lib/cmdlib.py @@ -496,15 +496,6 @@ class _QueryBase: # Return expanded names return self.wanted - @classmethod - def FieldsQuery(cls, fields): - """Returns list of available fields. - - @return: List of L{objects.QueryFieldDefinition} - - """ - return query.QueryFields(cls.FIELDS, fields) - def ExpandNames(self, lu): """Expand names for this query. @@ -4044,7 +4035,7 @@ class LUQueryFields(NoHooksLU): self.needed_locks = {} def Exec(self, feedback_fn): - return self.qcls.FieldsQuery(self.op.fields) + return query.QueryFields(self.qcls.FIELDS, self.op.fields) class LUNodeModifyStorage(NoHooksLU): diff --git a/lib/server/masterd.py b/lib/server/masterd.py index 89d6b3cad..bbe2658b9 100644 --- a/lib/server/masterd.py +++ b/lib/server/masterd.py @@ -250,18 +250,13 @@ class ClientOps: elif method == luxi.REQ_QUERY_FIELDS: req = objects.QueryFieldsRequest.FromDict(args) - if req.what in constants.QR_VIA_OP: - result = self._Query(opcodes.OpQueryFields(what=req.what, - fields=req.fields)) - elif req.what == constants.QR_LOCK: - return query.QueryFields(query.LOCK_FIELDS, req.fields) - elif req.what in constants.QR_VIA_LUXI: - raise NotImplementedError - else: + try: + fielddefs = query.ALL_FIELDS[req.what] + except KeyError: raise errors.OpPrereqError("Resource type '%s' unknown" % req.what, errors.ECODE_INVAL) - return result + return query.QueryFields(fielddefs, req.fields) elif method == luxi.REQ_QUERY_JOBS: (job_ids, fields) = args -- GitLab