Interdiff: add IAllocator comment

Signed-off-by: Jose A. Lopes <[email protected]>
---
 src/Ganeti/Types.hs | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/src/Ganeti/Types.hs b/src/Ganeti/Types.hs
index ca1da71..bf6012a 100644
--- a/src/Ganeti/Types.hs
+++ b/src/Ganeti/Types.hs
@@ -512,6 +512,11 @@ addParamsToStorageUnit es (SURaw StorageLvmVg key) = 
SULvmVg key es
 addParamsToStorageUnit _ (SURaw StorageRados key) = SURados key

 -- | Node evac modes.
+--
+-- This is part of the 'IAllocator' interface and it is used, for
+-- example, in 'Ganeti.HTools.Loader.RqType'.  However, it must reside
+-- in this module, and not in 'Ganeti.HTools.Types', because it is
+-- also used by 'Ganeti.HsConstants'.
 $(THH.declareLADT ''String "EvacMode"
   [ ("ChangePrimary",   "primary-only")
   , ("ChangeSecondary", "secondary-only")
--

On Wed, Oct 02, 2013 at 11:07:59AM +0200, Jose A. Lopes wrote:
> Merge 'EvacMode' and 'NodeEvacMode' which are associated with the
> duplicated constants 'IALLOCATOR_NEVAC_*' and 'NODE_EVAC_*'.  This
> merge moves the type 'EvacMode' to 'Ganeti.Types' in order to avoid a
> circular dependency between 'Ganeti.HsConstants' and
> 'Ganeti.HTools.Types'.  The type 'EvacMode' is preferred to the type
> 'NodeEvacMode' given that its use is more widespread.
> 
> Signed-off-by: Jose A. Lopes <[email protected]>
> ---
>  lib/ht.py                             |  2 +-
>  lib/masterd/iallocator.py             |  2 +-
>  src/Ganeti/HTools/Backend/IAlloc.hs   |  1 +
>  src/Ganeti/HTools/Cluster.hs          |  2 +-
>  src/Ganeti/HTools/Loader.hs           |  1 +
>  src/Ganeti/HTools/Types.hs            |  9 ---------
>  src/Ganeti/HsConstants.hs             |  8 ++++----
>  src/Ganeti/OpParams.hs                |  4 ++--
>  src/Ganeti/Types.hs                   | 14 +++++++-------
>  test/hs/Test/Ganeti/HTools/Cluster.hs |  1 +
>  test/hs/Test/Ganeti/HTools/Types.hs   |  7 -------
>  test/hs/Test/Ganeti/Types.hs          |  4 ++--
>  12 files changed, 21 insertions(+), 34 deletions(-)
> 
> diff --git a/lib/ht.py b/lib/ht.py
> index f0f0b5d..d6171ac 100644
> --- a/lib/ht.py
> +++ b/lib/ht.py
> @@ -537,7 +537,7 @@ TExportMode = TElemOf(constants.EXPORT_MODES)
>  TDiskIndex = TAnd(TNonNegativeInt, lambda val: val < constants.MAX_DISKS)
>  TReplaceDisksMode = TElemOf(constants.REPLACE_MODES)
>  TDiskTemplate = TElemOf(constants.DISK_TEMPLATES)
> -TNodeEvacMode = TElemOf(constants.NODE_EVAC_MODES)
> +TEvacMode = TElemOf(constants.NODE_EVAC_MODES)
>  TIAllocatorTestDir = TElemOf(constants.VALID_IALLOCATOR_DIRECTIONS)
>  TIAllocatorMode = TElemOf(constants.VALID_IALLOCATOR_MODES)
>  
> diff --git a/lib/masterd/iallocator.py b/lib/masterd/iallocator.py
> index 5a670b6..e380db6 100644
> --- a/lib/masterd/iallocator.py
> +++ b/lib/masterd/iallocator.py
> @@ -336,7 +336,7 @@ class IAReqNodeEvac(IARequestBase):
>    MODE = constants.IALLOCATOR_MODE_NODE_EVAC
>    REQ_PARAMS = [
>      ("instances", _STRING_LIST),
> -    ("evac_mode", ht.TNodeEvacMode),
> +    ("evac_mode", ht.TEvacMode),
>      ]
>    REQ_RESULT = _NEVAC_RESULT
>  
> diff --git a/src/Ganeti/HTools/Backend/IAlloc.hs 
> b/src/Ganeti/HTools/Backend/IAlloc.hs
> index dd92497..27dc2e6 100644
> --- a/src/Ganeti/HTools/Backend/IAlloc.hs
> +++ b/src/Ganeti/HTools/Backend/IAlloc.hs
> @@ -50,6 +50,7 @@ import Ganeti.HTools.CLI
>  import Ganeti.HTools.Loader
>  import Ganeti.HTools.Types
>  import Ganeti.JSON
> +import Ganeti.Types (EvacMode(ChangePrimary, ChangeSecondary))
>  import Ganeti.Utils
>  
>  {-# ANN module "HLint: ignore Eta reduce" #-}
> diff --git a/src/Ganeti/HTools/Cluster.hs b/src/Ganeti/HTools/Cluster.hs
> index 88891a4..fe3432c 100644
> --- a/src/Ganeti/HTools/Cluster.hs
> +++ b/src/Ganeti/HTools/Cluster.hs
> @@ -94,7 +94,7 @@ import Ganeti.HTools.Types
>  import Ganeti.Compat
>  import qualified Ganeti.OpCodes as OpCodes
>  import Ganeti.Utils
> -import Ganeti.Types (mkNonEmpty)
> +import Ganeti.Types (EvacMode(..), mkNonEmpty)
>  
>  -- * Types
>  
> diff --git a/src/Ganeti/HTools/Loader.hs b/src/Ganeti/HTools/Loader.hs
> index 49d337d..7049ff6 100644
> --- a/src/Ganeti/HTools/Loader.hs
> +++ b/src/Ganeti/HTools/Loader.hs
> @@ -60,6 +60,7 @@ import Ganeti.BasicTypes
>  import qualified Ganeti.Constants as C
>  import Ganeti.HTools.Types
>  import Ganeti.Utils
> +import Ganeti.Types (EvacMode)
>  
>  -- * Constants
>  
> diff --git a/src/Ganeti/HTools/Types.hs b/src/Ganeti/HTools/Types.hs
> index 764c56c..b4f8c86 100644
> --- a/src/Ganeti/HTools/Types.hs
> +++ b/src/Ganeti/HTools/Types.hs
> @@ -69,7 +69,6 @@ module Ganeti.HTools.Types
>    , FailStats
>    , OpResult
>    , opToResult
> -  , EvacMode(..)
>    , ISpec(..)
>    , MinMaxISpecs(..)
>    , IPolicy(..)
> @@ -378,14 +377,6 @@ class Element a where
>    -- | Updates the index of the element
>    setIdx  :: a -> Int -> a
>  
> --- | The iallocator node-evacuate evac_mode type.
> -$(THH.declareSADT "EvacMode"
> -       [ ("ChangePrimary",   'C.iallocatorNevacPri)
> -       , ("ChangeSecondary", 'C.iallocatorNevacSec)
> -       , ("ChangeAll",       'C.iallocatorNevacAll)
> -       ])
> -$(THH.makeJSONInstance ''EvacMode)
> -
>  -- | The repair modes for the auto-repair tool.
>  $(THH.declareSADT "AutoRepairType"
>         -- Order is important here: from least destructive to most.
> diff --git a/src/Ganeti/HsConstants.hs b/src/Ganeti/HsConstants.hs
> index 1a64e2d..fe20ff6 100644
> --- a/src/Ganeti/HsConstants.hs
> +++ b/src/Ganeti/HsConstants.hs
> @@ -1100,16 +1100,16 @@ defaultIallocatorShortcut = "."
>  -- * Node evacuation
>  
>  nodeEvacPri :: String
> -nodeEvacPri = Types.nodeEvacModeToRaw NEvacPrimary
> +nodeEvacPri = Types.evacModeToRaw ChangePrimary
>  
>  nodeEvacSec :: String
> -nodeEvacSec = Types.nodeEvacModeToRaw NEvacSecondary
> +nodeEvacSec = Types.evacModeToRaw ChangeSecondary
>  
>  nodeEvacAll :: String
> -nodeEvacAll = Types.nodeEvacModeToRaw NEvacAll
> +nodeEvacAll = Types.evacModeToRaw ChangeAll
>  
>  nodeEvacModes :: FrozenSet String
> -nodeEvacModes = ConstantUtils.mkSet $ map Types.nodeEvacModeToRaw 
> [minBound..]
> +nodeEvacModes = ConstantUtils.mkSet $ map Types.evacModeToRaw [minBound..]
>  
>  -- * Job status
>  
> diff --git a/src/Ganeti/OpParams.hs b/src/Ganeti/OpParams.hs
> index fee24aa..ed06a02 100644
> --- a/src/Ganeti/OpParams.hs
> +++ b/src/Ganeti/OpParams.hs
> @@ -940,7 +940,7 @@ pRemoteNodeUuid =
>  pEvacMode :: Field
>  pEvacMode =
>    withDoc "Node evacuation mode" .
> -  renameField "EvacMode" $ simpleField "mode" [t| NodeEvacMode |]
> +  renameField "EvacMode" $ simpleField "mode" [t| EvacMode |]
>  
>  pInstanceName :: Field
>  pInstanceName =
> @@ -1485,7 +1485,7 @@ pIAllocatorEvacMode =
>    withDoc "IAllocator evac mode" .
>    renameField "IAllocatorEvacMode" .
>    optionalField $
> -  simpleField "evac_mode" [t| NodeEvacMode |]
> +  simpleField "evac_mode" [t| EvacMode |]
>  
>  pIAllocatorSpindleUse :: Field
>  pIAllocatorSpindleUse =
> diff --git a/src/Ganeti/Types.hs b/src/Ganeti/Types.hs
> index ba9dea7..ca1da71 100644
> --- a/src/Ganeti/Types.hs
> +++ b/src/Ganeti/Types.hs
> @@ -82,8 +82,8 @@ module Ganeti.Types
>    , oobStatusToRaw
>    , StorageType(..)
>    , storageTypeToRaw
> -  , NodeEvacMode(..)
> -  , nodeEvacModeToRaw
> +  , EvacMode(..)
> +  , evacModeToRaw
>    , FileDriver(..)
>    , fileDriverToRaw
>    , InstCreateMode(..)
> @@ -512,12 +512,12 @@ addParamsToStorageUnit es (SURaw StorageLvmVg key) = 
> SULvmVg key es
>  addParamsToStorageUnit _ (SURaw StorageRados key) = SURados key
>  
>  -- | Node evac modes.
> -$(THH.declareLADT ''String "NodeEvacMode"
> -  [ ("NEvacPrimary",   "primary-only")
> -  , ("NEvacSecondary", "secondary-only")
> -  , ("NEvacAll",       "all")
> +$(THH.declareLADT ''String "EvacMode"
> +  [ ("ChangePrimary",   "primary-only")
> +  , ("ChangeSecondary", "secondary-only")
> +  , ("ChangeAll",       "all")
>    ])
> -$(THH.makeJSONInstance ''NodeEvacMode)
> +$(THH.makeJSONInstance ''EvacMode)
>  
>  -- | The file driver type.
>  $(THH.declareLADT ''String "FileDriver"
> diff --git a/test/hs/Test/Ganeti/HTools/Cluster.hs 
> b/test/hs/Test/Ganeti/HTools/Cluster.hs
> index fe63b79..0555f7c 100644
> --- a/test/hs/Test/Ganeti/HTools/Cluster.hs
> +++ b/test/hs/Test/Ganeti/HTools/Cluster.hs
> @@ -48,6 +48,7 @@ import qualified Ganeti.HTools.Group as Group
>  import qualified Ganeti.HTools.Instance as Instance
>  import qualified Ganeti.HTools.Node as Node
>  import qualified Ganeti.HTools.Types as Types
> +import qualified Ganeti.Types as Types (EvacMode(..))
>  
>  {-# ANN module "HLint: ignore Use camelCase" #-}
>  
> diff --git a/test/hs/Test/Ganeti/HTools/Types.hs 
> b/test/hs/Test/Ganeti/HTools/Types.hs
> index fecbda2..4556a13 100644
> --- a/test/hs/Test/Ganeti/HTools/Types.hs
> +++ b/test/hs/Test/Ganeti/HTools/Types.hs
> @@ -31,7 +31,6 @@ module Test.Ganeti.HTools.Types
>    , Types.AllocPolicy(..)
>    , Types.DiskTemplate(..)
>    , Types.FailMode(..)
> -  , Types.EvacMode(..)
>    , Types.ISpec(..)
>    , Types.IPolicy(..)
>    , nullIPolicy
> @@ -61,8 +60,6 @@ import qualified Ganeti.HTools.Types as Types
>  
>  $(genArbitrary ''Types.FailMode)
>  
> -$(genArbitrary ''Types.EvacMode)
> -
>  instance Arbitrary a => Arbitrary (Types.OpResult a) where
>    arbitrary = arbitrary >>= \c ->
>                if c
> @@ -155,9 +152,6 @@ prop_ISpec_serialisation = testSerialisation
>  prop_IPolicy_serialisation :: Types.IPolicy -> Property
>  prop_IPolicy_serialisation = testSerialisation
>  
> -prop_EvacMode_serialisation :: Types.EvacMode -> Property
> -prop_EvacMode_serialisation = testSerialisation
> -
>  prop_opToResult :: Types.OpResult Int -> Property
>  prop_opToResult op =
>    case op of
> @@ -200,7 +194,6 @@ case_AutoRepairResult_pyequiv = do
>  testSuite "HTools/Types"
>              [ 'prop_ISpec_serialisation
>              , 'prop_IPolicy_serialisation
> -            , 'prop_EvacMode_serialisation
>              , 'prop_opToResult
>              , 'prop_eitherToResult
>              , 'case_AutoRepairType_sort
> diff --git a/test/hs/Test/Ganeti/Types.hs b/test/hs/Test/Ganeti/Types.hs
> index 0e8c5eb..4315ecb 100644
> --- a/test/hs/Test/Ganeti/Types.hs
> +++ b/test/hs/Test/Ganeti/Types.hs
> @@ -115,7 +115,7 @@ allStorageTypes = [minBound..maxBound]::[StorageType]
>  instance Arbitrary StorageType where
>    arbitrary = elements allStorageTypes
>  
> -$(genArbitrary ''NodeEvacMode)
> +$(genArbitrary ''EvacMode)
>  
>  $(genArbitrary ''FileDriver)
>  
> @@ -269,7 +269,7 @@ prop_StorageType_serialisation :: StorageType -> Property
>  prop_StorageType_serialisation = testSerialisation
>  
>  -- | Test 'NodeEvacMode' serialisation.
> -prop_NodeEvacMode_serialisation :: NodeEvacMode -> Property
> +prop_NodeEvacMode_serialisation :: EvacMode -> Property
>  prop_NodeEvacMode_serialisation = testSerialisation
>  
>  -- | Test 'FileDriver' serialisation.
> -- 
> 1.8.4
> 

-- 
Jose Antonio Lopes
Ganeti Engineering
Google Germany GmbH
Dienerstr. 12, 80331, München

Registergericht und -nummer: Hamburg, HRB 86891
Sitz der Gesellschaft: Hamburg
Geschäftsführer: Graham Law, Christine Elizabeth Flores
Steuernummer: 48/725/00206
Umsatzsteueridentifikationsnummer: DE813741370

Reply via email to