Hs2Py constants: add 'value*' and 'niccDefaults'
authorJose A. Lopes <jabolopes@google.com>
Tue, 15 Oct 2013 15:32:55 +0000 (17:32 +0200)
committerJose A. Lopes <jabolopes@google.com>
Mon, 28 Oct 2013 10:04:49 +0000 (11:04 +0100)
* add group of constants 'value*' and constant 'niccDefaults' to the
  Haskell to Python constant generation

* add 'PythonNone' to represent the 'None' is Haskell to Python
  generated code

Signed-off-by: Jose A. Lopes <jabolopes@google.com>
Reviewed-by: Klaus Aehlig <aehlig@google.com>

lib/constants.py
src/Ganeti/ConstantUtils.hs
src/Ganeti/HsConstants.hs

index 685bebb..44dbb0a 100644 (file)
@@ -203,14 +203,13 @@ IEIO_FILE = _constants.IEIO_FILE
 IEIO_RAW_DISK = _constants.IEIO_RAW_DISK
 IEIO_SCRIPT = _constants.IEIO_SCRIPT
 
-VALUE_DEFAULT = "default"
-VALUE_AUTO = "auto"
-VALUE_GENERATE = "generate"
-VALUE_NONE = "none"
-VALUE_TRUE = "true"
-VALUE_FALSE = "false"
-VALUE_HS_NOTHING = {"Nothing": None}
-
+VALUE_DEFAULT = _constants.VALUE_DEFAULT
+VALUE_AUTO = _constants.VALUE_AUTO
+VALUE_GENERATE = _constants.VALUE_GENERATE
+VALUE_NONE = _constants.VALUE_NONE
+VALUE_TRUE = _constants.VALUE_TRUE
+VALUE_FALSE = _constants.VALUE_FALSE
+VALUE_HS_NOTHING = _constants.VALUE_HS_NOTHING
 
 # External script validation mask
 EXT_PLUGIN_MASK = re.compile("^[a-zA-Z0-9_-]+$")
@@ -1325,12 +1324,7 @@ DISK_DT_DEFAULTS = {
 # we don't want to export the shortcuts
 del _LV_DEFAULTS, _DRBD_DEFAULTS
 
-NICC_DEFAULTS = {
-  NIC_MODE: NIC_MODE_BRIDGED,
-  NIC_LINK: DEFAULT_BRIDGE,
-  NIC_VLAN: VALUE_HS_NOTHING,
-  }
-
+NICC_DEFAULTS = _constants.NICC_DEFAULTS
 ISPECS_MINMAX_DEFAULTS = _constants.ISPECS_MINMAX_DEFAULTS
 IPOLICY_DEFAULTS = _constants.IPOLICY_DEFAULTS
 
index 46b7a9e..853cdeb 100644 (file)
@@ -42,6 +42,12 @@ newtype PythonChar = PythonChar { unPythonChar :: Char }
 instance PyValue PythonChar where
   showValue c = "chr(" ++ show (ord (unPythonChar c)) ++ ")"
 
+-- | 'PythonNone' wraps Python 'None'
+data PythonNone = PythonNone
+
+instance PyValue PythonNone where
+  showValue _ = "None"
+
 -- | FrozenSet wraps a Haskell 'Set'
 --
 -- See 'PyValue' instance for 'FrozenSet'.
index 99a1d98..17d36ed 100644 (file)
@@ -43,8 +43,8 @@ import Data.Map (Map)
 import qualified Data.Map as Map (empty, fromList, keys, insert)
 
 import qualified AutoConf
-import Ganeti.ConstantUtils (PythonChar(..), FrozenSet, Protocol(..),
-                             buildVersion)
+import Ganeti.ConstantUtils (PythonChar(..), PythonNone(..), FrozenSet,
+                             Protocol(..), buildVersion)
 import qualified Ganeti.ConstantUtils as ConstantUtils
 import Ganeti.HTools.Types (AutoRepairResult(..), AutoRepairType(..))
 import qualified Ganeti.HTools.Types as Types
@@ -581,6 +581,29 @@ ieioRawDisk = "raw"
 ieioScript :: String
 ieioScript = "script"
 
+-- * Values
+
+valueDefault :: String
+valueDefault = "default"
+
+valueAuto :: String
+valueAuto = "auto"
+
+valueGenerate :: String
+valueGenerate = "generate"
+
+valueNone :: String
+valueNone = "none"
+
+valueTrue :: String
+valueTrue = "true"
+
+valueFalse :: String
+valueFalse = "false"
+
+valueHsNothing :: Map String PythonNone
+valueHsNothing = Map.fromList [("Nothing", PythonNone)]
+
 -- * Hooks
 
 hooksNameCfgupdate :: String
@@ -3517,6 +3540,14 @@ diskLdDefaults =
   , (DTExt, Map.empty)
   ]
 
+niccDefaults :: Map String PyValueEx
+niccDefaults =
+  Map.fromList
+  [ (nicMode, PyValueEx nicModeBridged)
+  , (nicLink, PyValueEx defaultBridge)
+  , (nicVlan, PyValueEx valueHsNothing)
+  ]
+
 -- | All of the following values are quite arbitrary - there are no
 -- "good" defaults, these must be customised per-site
 ispecsMinmaxDefaults :: Map String (Map String Int)