From 3131adc7a516d7186a6168857a89f20068de3a39 Mon Sep 17 00:00:00 2001
From: Iustin Pop <iustin@google.com>
Date: Sun, 25 Nov 2012 22:44:25 +0100
Subject: [PATCH] Abstract query common opcode definitions

It would be even better if the opcodes would actually have all the
same definitions, until then we have two sets of definitions.

Signed-off-by: Iustin Pop <iustin@google.com>
Reviewed-by: Helga Velroyen <helgav@google.com>
---
 htest/Test/Ganeti/OpCodes.hs |  2 +-
 htools/Ganeti/OpCodes.hs     | 22 ++++------------------
 htools/Ganeti/OpParams.hs    | 19 +++++++++++++++++++
 3 files changed, 24 insertions(+), 19 deletions(-)

diff --git a/htest/Test/Ganeti/OpCodes.hs b/htest/Test/Ganeti/OpCodes.hs
index 1e52c687d..32e29c4ac 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 d6c656b71..20acff73c 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 a83ec3d99..0970c1dee 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
+  ]
-- 
GitLab