diff --git a/htest/Test/Ganeti/OpCodes.hs b/htest/Test/Ganeti/OpCodes.hs
index 1e52c687dcba4819e76cc74294aedd333a4b63f6..32e29c4acd62f948f92e974b083da7b0e0b3653d 100644
--- a/htest/Test/Ganeti/OpCodes.hs
+++ b/htest/Test/Ganeti/OpCodes.hs
@@ -176,7 +176,7 @@ instance Arbitrary OpCodes.OpCode where
           genMaybe genName <*> genMaybe genNameNE <*> arbitrary <*>
           genMaybe genNameNE <*> arbitrary <*> arbitrary <*> emptyMUD
       "OP_NODE_QUERY" ->
-        OpCodes.OpNodeQuery <$> genFieldsNE <*> arbitrary <*> genNamesNE
+        OpCodes.OpNodeQuery <$> genFieldsNE <*> genNamesNE <*> arbitrary
       "OP_NODE_QUERYVOLS" ->
         OpCodes.OpNodeQueryvols <$> arbitrary <*> genNodeNamesNE
       "OP_NODE_QUERY_STORAGE" ->
diff --git a/htools/Ganeti/OpCodes.hs b/htools/Ganeti/OpCodes.hs
index d6c656b719164b9cd88fb166c5cfa5a49b30b17f..20acff73c7263f3b0c81d54f9d3322d389d6f035 100644
--- a/htools/Ganeti/OpCodes.hs
+++ b/htools/Ganeti/OpCodes.hs
@@ -187,11 +187,7 @@ $(genOpCode "OpCode"
      , pVmCapable
      , pNdParams
     ])
-  , ("OpNodeQuery",
-     [ pOutputFields
-     , pUseLocking
-     , pNames
-     ])
+  , ("OpNodeQuery", dOldQuery)
   , ("OpNodeQueryvols",
      [ pOutputFields
      , pNodes
@@ -347,11 +343,7 @@ $(genOpCode "OpCode"
      , pNodes
      , pIallocator
      ])
-  , ("OpInstanceQuery",
-     [ pOutputFields
-     , pNames
-     , pUseLocking
-     ])
+  , ("OpInstanceQuery", dOldQuery)
   , ("OpInstanceQueryData",
      [ pUseLocking
      , pInstances
@@ -402,10 +394,7 @@ $(genOpCode "OpCode"
      , pForce
      , pRequiredNodes
      ])
-  , ("OpGroupQuery",
-     [ pOutputFields
-     , pNames
-     ])
+  , ("OpGroupQuery", dOldQueryNoLocking)
   , ("OpGroupSetParams",
      [ pGroupName
      , pNodeGroupAllocPolicy
@@ -518,10 +507,7 @@ $(genOpCode "OpCode"
      , pNetworkName
      , pIpConflictsCheck
      ])
-  , ("OpNetworkQuery",
-     [ pOutputFields
-     , pNames
-     ])
+  , ("OpNetworkQuery", dOldQueryNoLocking)
   , ("OpRestrictedCommand",
      [ pUseLocking
      , pRequiredNodes
diff --git a/htools/Ganeti/OpParams.hs b/htools/Ganeti/OpParams.hs
index a83ec3d995c923aae08d870f7ee6dc8bea53120f..0970c1deef80e5a2225358088ae616b9c47dc33c 100644
--- a/htools/Ganeti/OpParams.hs
+++ b/htools/Ganeti/OpParams.hs
@@ -221,6 +221,8 @@ module Ganeti.OpParams
   , pNetworkRemoveRsvdIps
   , pNetworkMode
   , pNetworkLink
+  , dOldQuery
+  , dOldQueryNoLocking
   ) where
 
 import Control.Monad (liftM)
@@ -1342,3 +1344,20 @@ pNetworkMode = simpleField "network_mode" [t| NICMode |]
 -- | Network link when connecting to a group.
 pNetworkLink :: Field
 pNetworkLink = simpleField "network_link" [t| NonEmptyString |]
+
+-- * Entire opcode parameter list
+
+-- | Old-style query opcode, with locking.
+dOldQuery :: [Field]
+dOldQuery =
+  [ pOutputFields
+  , pNames
+  , pUseLocking
+  ]
+
+-- | Old-style query opcode, without locking.
+dOldQueryNoLocking :: [Field]
+dOldQueryNoLocking =
+  [ pOutputFields
+  , pNames
+  ]