On Tue, Oct 08, 2013 at 11:10:23AM +0200, Thomas Thrainer wrote:
> On Mon, Oct 7, 2013 at 4:37 PM, Jose A. Lopes <[email protected]> wrote:
>
> > Add constants related to local disk status to the Haskell to Python
> > constant generation. A new Haskell type 'LocalDiskStatus' is added
> > similarly to the constants that have been added previously in other
> > Hs2Py patches.
> >
> > Signed-off-by: Jose A. Lopes <[email protected]>
> > ---
> > lib/constants.py | 19 +++++--------------
> > src/Ganeti/HsConstants.hs | 20 ++++++++++++++++++++
> > src/Ganeti/Types.hs | 24 ++++++++++++++++++++++++
> > 3 files changed, 49 insertions(+), 14 deletions(-)
> >
> > diff --git a/lib/constants.py b/lib/constants.py
> > index 2e7bb5b..412b996 100644
> > --- a/lib/constants.py
> > +++ b/lib/constants.py
> > @@ -353,6 +353,10 @@ MODIFIABLE_STORAGE_FIELDS = {
> > ST_LVM_PV: frozenset([SF_ALLOCATABLE]),
> > }
> >
> > +LDS_OKAY = _constants.LDS_OKAY
> > +LDS_UNKNOWN = _constants.LDS_UNKNOWN
> > +LDS_FAULTY = _constants.LDS_FAULTY
> > +LDS_NAMES = _constants.LDS_NAMES
> > VALID_STORAGE_OPERATIONS = {
> > ST_LVM_VG: frozenset([SO_FIX_CONSISTENCY]),
> > }
> > @@ -366,18 +370,6 @@ VF_PHYS = "phys"
> > VF_SIZE = "size"
> > VF_VG = "vg"
> >
> > -# Local disk status
> > -# Note: Code depends on LDS_OKAY < LDS_UNKNOWN < LDS_FAULTY
> > -(LDS_OKAY,
> > - LDS_UNKNOWN,
> > - LDS_FAULTY) = range(1, 4)
> > -
> > -LDS_NAMES = {
> > - LDS_OKAY: "ok",
> > - LDS_UNKNOWN: "unknown",
> > - LDS_FAULTY: "faulty",
> > -}
> > -
> > # disk template types
> > DT_BLOCK = _constants.DT_BLOCK
> > DT_DISKLESS = _constants.DT_DISKLESS
> > @@ -514,8 +506,7 @@ RBD_CMD = "rbd"
> > FD_BLKTAP = _constants.FD_BLKTAP
> > FD_LOOP = _constants.FD_LOOP
> >
> > -# the set of drbd-like disk types
> > -LDS_DRBD = compat.UniqueFrozenset([DT_DRBD8])
> > +LDS_DRBD = _constants.LDS_DRBD
> >
> > # disk access mode
> > DISK_RDONLY = _constants.DISK_RDONLY
> > diff --git a/src/Ganeti/HsConstants.hs b/src/Ganeti/HsConstants.hs
> > index 86c606a..fdcacd0 100644
> > --- a/src/Ganeti/HsConstants.hs
> > +++ b/src/Ganeti/HsConstants.hs
> > @@ -452,6 +452,22 @@ sfSize = Types.storageFieldToRaw SFSize
> > sfUsed :: String
> > sfUsed = Types.storageFieldToRaw SFUsed
> >
> > +-- * Local disk status
> > +
> > +ldsFaulty :: Int
> > +ldsFaulty = Types.localDiskStatusToRaw DiskStatusFaulty
> > +
> > +ldsOkay :: Int
> > +ldsOkay = Types.localDiskStatusToRaw DiskStatusOk
> > +
> > +ldsUnknown :: Int
> > +ldsUnknown = Types.localDiskStatusToRaw DiskStatusUnknown
> > +
> > +ldsNames :: Map Int String
> > +ldsNames =
> > + Map.fromList [ (Types.localDiskStatusToRaw ds,
> > + localDiskStatusName ds) | ds <- [minBound..] ]
> > +
> > -- * Disk template types
> >
> > dtDiskless :: String
> > @@ -503,6 +519,10 @@ fdBlktap = Types.fileDriverToRaw FileBlktap
> > fdLoop :: String
> > fdLoop = Types.fileDriverToRaw FileLoop
> >
> > +-- | The set of drbd-like disk types
> > +ldsDrbd :: FrozenSet String
> > +ldsDrbd = ConstantUtils.mkSet [Types.diskTemplateToRaw DTDrbd8]
> > +
> > -- * Disk access mode
> >
> > diskRdonly :: String
> > diff --git a/src/Ganeti/Types.hs b/src/Ganeti/Types.hs
> > index e737065..28bfd3e 100644
> > --- a/src/Ganeti/Types.hs
> > +++ b/src/Ganeti/Types.hs
> > @@ -143,6 +143,10 @@ module Ganeti.Types
> > , storageFieldToRaw
> > , DiskAccessMode(..)
> > , diskAccessModeToRaw
> > + , LocalDiskStatus(..)
> > + , localDiskStatusFromRaw
> > + , localDiskStatusToRaw
> > + , localDiskStatusName
> > , ReplaceDisksMode(..)
> > , replaceDisksModeToRaw
> > , RpcTimeout(..)
> > @@ -398,6 +402,8 @@ $(THH.declareLADT ''String "DdmSimple"
> > $(THH.makeJSONInstance ''DdmSimple)
> >
> > -- | Dynamic device modification, all operations version.
> > +--
> > +-- TODO: DDM_SWAP, DDM_MOVE?
> > $(THH.declareLADT ''String "DdmFull"
> > [ ("DdmFullAdd", "add")
> > , ("DdmFullRemove", "remove")
> > @@ -724,6 +730,9 @@ $(THH.declareLADT ''String "VType"
> > ])
> > $(THH.makeJSONInstance ''VType)
> >
> > +instance THH.PyValue VType where
> > + showValue = THH.showValue . vTypeToRaw
> > +
> > -- * Node role type
> >
> > $(THH.declareLADT ''String "NodeRole"
> > @@ -785,6 +794,21 @@ $(THH.declareLADT ''String "DiskAccessMode"
> > ])
> > $(THH.makeJSONInstance ''DiskAccessMode)
> >
> > +-- | Local disk status
> > +--
> > +-- Python code depends on:
> > +-- DiskStatusOk < DiskStatusUnknown < DiskStatusFaulty
> >
>
> Why not list them in this order then?
They are listed alphabetically. Do you want me to change that ?
>
>
> > +$(THH.declareILADT "LocalDiskStatus"
> > + [ ("DiskStatusFaulty", 3)
> > + , ("DiskStatusOk", 1)
> > + , ("DiskStatusUnknown", 2)
> > + ])
> > +
> > +localDiskStatusName :: LocalDiskStatus -> String
> > +localDiskStatusName DiskStatusFaulty = "faulty"
> > +localDiskStatusName DiskStatusOk = "ok"
> > +localDiskStatusName DiskStatusUnknown = "unknown"
> > +
> > -- | Replace disks type.
> > $(THH.declareLADT ''String "ReplaceDisksMode"
> > [ -- Replace disks on primary
> > --
> > 1.8.4
> >
> >
> Rest LGTM, thanks.
>
>
>
> --
> Thomas Thrainer | Software Engineer | [email protected] |
>
> 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
--
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