diff --git a/htest/Test/Ganeti/OpCodes.hs b/htest/Test/Ganeti/OpCodes.hs
index d34a74776caf9e494092b337afeec43eddfdbd29..c18cfa82e4464a5649db96cedb057c15d5325edd 100644
--- a/htest/Test/Ganeti/OpCodes.hs
+++ b/htest/Test/Ganeti/OpCodes.hs
@@ -177,7 +177,7 @@ instance Arbitrary OpCodes.OpCode where
           getMaybe getName <*> getMaybe genNameNE <*> arbitrary <*>
           getMaybe genNameNE <*> arbitrary <*> arbitrary <*> emptyMUD
       "OP_NODE_QUERY" ->
-        OpCodes.OpNodeQuery <$> arbitrary <*> arbitrary <*> arbitrary
+        OpCodes.OpNodeQuery <$> genFieldsNE <*> arbitrary <*> genNamesNE
       "OP_NODE_QUERYVOLS" ->
         OpCodes.OpNodeQueryvols <$> arbitrary <*> genNodeNamesNE
       "OP_NODE_QUERY_STORAGE" ->
@@ -248,6 +248,8 @@ instance Arbitrary OpCodes.OpCode where
       "OP_INSTANCE_RECREATE_DISKS" ->
         OpCodes.OpInstanceRecreateDisks <$> getFQDN <*> arbitrary <*>
           genNodeNamesNE <*> getMaybe genNameNE
+      "OP_INSTANCE_QUERY" ->
+        OpCodes.OpInstanceQuery <$> genFieldsNE <*> genNamesNE <*> arbitrary
       "OP_INSTANCE_QUERY_DATA" ->
         OpCodes.OpInstanceQueryData <$> arbitrary <*>
           genNodeNamesNE <*> arbitrary
@@ -328,6 +330,9 @@ instance Arbitrary OpCodes.OpCode where
         OpCodes.OpNetworkDisconnect <$> genNameNE <*> genNameNE <*> arbitrary
       "OP_NETWORK_QUERY" ->
         OpCodes.OpNetworkQuery <$> genFieldsNE <*> genNamesNE
+      "OP_RESTRICTED_COMMAND" ->
+        OpCodes.OpRestrictedCommand <$> arbitrary <*> genNodeNamesNE <*>
+          genNameNE
       _ -> fail $ "Undefined arbitrary for opcode " ++ op_id
 
 -- * Helper functions
diff --git a/htools/Ganeti/OpCodes.hs b/htools/Ganeti/OpCodes.hs
index 663dade10e125059a72602d5f5b3890502b1182d..d6c656b719164b9cd88fb166c5cfa5a49b30b17f 100644
--- a/htools/Ganeti/OpCodes.hs
+++ b/htools/Ganeti/OpCodes.hs
@@ -347,6 +347,11 @@ $(genOpCode "OpCode"
      , pNodes
      , pIallocator
      ])
+  , ("OpInstanceQuery",
+     [ pOutputFields
+     , pNames
+     , pUseLocking
+     ])
   , ("OpInstanceQueryData",
      [ pUseLocking
      , pInstances
@@ -517,6 +522,11 @@ $(genOpCode "OpCode"
      [ pOutputFields
      , pNames
      ])
+  , ("OpRestrictedCommand",
+     [ pUseLocking
+     , pRequiredNodes
+     , pRestrictedCommand
+     ])
   ])
 
 -- | Returns the OP_ID for a given opcode value.
diff --git a/htools/Ganeti/OpParams.hs b/htools/Ganeti/OpParams.hs
index a5b48bcd90e1fe6db88401d108879a45a38e031c..a83ec3d995c923aae08d870f7ee6dc8bea53120f 100644
--- a/htools/Ganeti/OpParams.hs
+++ b/htools/Ganeti/OpParams.hs
@@ -188,6 +188,7 @@ module Ganeti.OpParams
   , pX509KeyName
   , pX509DestCA
   , pTagSearchPattern
+  , pRestrictedCommand
   , pDelayRepeat
   , pIAllocatorDirection
   , pIAllocatorMode
@@ -1152,6 +1153,12 @@ pTagSearchPattern :: Field
 pTagSearchPattern =
   renameField "TagSearchPattern" $ simpleField "pattern" [t| NonEmptyString |]
 
+-- | Restricted command name.
+pRestrictedCommand :: Field
+pRestrictedCommand =
+  renameField "RestrictedCommand" $
+  simpleField "command" [t| NonEmptyString |]
+
 -- * Test opcode parameters
 
 -- | Repeat parameter for OpTestDelay.