Correct properties of the cluster's file storage dir
[ganeti-local] / src / Ganeti / HsConstants.hs
index b2d5452..9e0d3c9 100644 (file)
@@ -1,3 +1,4 @@
+{-# OPTIONS -fno-warn-type-defaults #-}
 {-| HsConstants contains the Haskell constants
 
 This is a transitional module complementary to 'Ganeti.Constants'.  It
@@ -41,17 +42,17 @@ import Data.List ((\\))
 import Data.Map (Map)
 import qualified Data.Map as Map (fromList, keys, insert)
 
-import AutoConf
+import qualified AutoConf
 import Ganeti.ConstantUtils (PythonChar(..), FrozenSet, Protocol(..),
                              buildVersion)
 import qualified Ganeti.ConstantUtils as ConstantUtils
-import Ganeti.Runtime (GanetiDaemon(..), MiscGroup(..), GanetiGroup(..),
-                       ExtraLogReason(..))
 import Ganeti.HTools.Types (AutoRepairResult(..), AutoRepairType(..))
 import qualified Ganeti.HTools.Types as Types
 import Ganeti.Logging (SyslogUsage(..))
 import qualified Ganeti.Logging as Logging (syslogUsageToRaw)
 import qualified Ganeti.Runtime as Runtime
+import Ganeti.Runtime (GanetiDaemon(..), MiscGroup(..), GanetiGroup(..),
+                       ExtraLogReason(..))
 import Ganeti.Types
 import qualified Ganeti.Types as Types
 import Ganeti.Confd.Types (ConfdRequestType(..), ConfdReqField(..),
@@ -77,6 +78,9 @@ drbdNoMetaFlush = AutoConf.drbdNoMetaFlush
 lvmStripecount :: Int
 lvmStripecount = AutoConf.lvmStripecount
 
+hasGnuLn :: Bool
+hasGnuLn = AutoConf.hasGnuLn
+
 -- * 'autoconf' constants for Python only ('lib/pathutils.py')
 
 -- ** Build-time constants
@@ -904,8 +908,8 @@ fileDriver =
   map Types.fileDriverToRaw [minBound..]
 
 -- | The set of drbd-like disk types
-ldsDrbd :: FrozenSet String
-ldsDrbd = ConstantUtils.mkSet [Types.diskTemplateToRaw DTDrbd8]
+dtsDrbd :: FrozenSet String
+dtsDrbd = ConstantUtils.mkSet [Types.diskTemplateToRaw DTDrbd8]
 
 -- * Disk access mode
 
@@ -2253,6 +2257,236 @@ vncBasePort = 5900
 vncDefaultBindAddress :: String
 vncDefaultBindAddress = ip4AddressAny
 
+-- * NIC types
+
+htNicE1000 :: String
+htNicE1000 = "e1000"
+
+htNicI82551 :: String
+htNicI82551 = "i82551"
+
+htNicI8259er :: String
+htNicI8259er = "i82559er"
+
+htNicI85557b :: String
+htNicI85557b = "i82557b"
+
+htNicNe2kIsa :: String
+htNicNe2kIsa = "ne2k_isa"
+
+htNicNe2kPci :: String
+htNicNe2kPci = "ne2k_pci"
+
+htNicParavirtual :: String
+htNicParavirtual = "paravirtual"
+
+htNicPcnet :: String
+htNicPcnet = "pcnet"
+
+htNicRtl8139 :: String
+htNicRtl8139 = "rtl8139"
+
+htHvmValidNicTypes :: FrozenSet String
+htHvmValidNicTypes =
+  ConstantUtils.mkSet [htNicE1000,
+                       htNicNe2kIsa,
+                       htNicNe2kPci,
+                       htNicParavirtual,
+                       htNicRtl8139]
+
+htKvmValidNicTypes :: FrozenSet String
+htKvmValidNicTypes =
+  ConstantUtils.mkSet [htNicE1000,
+                       htNicI82551,
+                       htNicI8259er,
+                       htNicI85557b,
+                       htNicNe2kIsa,
+                       htNicNe2kPci,
+                       htNicParavirtual,
+                       htNicPcnet,
+                       htNicRtl8139]
+
+-- * Vif types
+
+-- | Default vif type in xen-hvm
+htHvmVifIoemu :: String
+htHvmVifIoemu = "ioemu"
+
+htHvmVifVif :: String
+htHvmVifVif = "vif"
+
+htHvmValidVifTypes :: FrozenSet String
+htHvmValidVifTypes = ConstantUtils.mkSet [htHvmVifIoemu, htHvmVifVif]
+
+-- * Disk types
+
+htDiskIde :: String
+htDiskIde = "ide"
+
+htDiskIoemu :: String
+htDiskIoemu = "ioemu"
+
+htDiskMtd :: String
+htDiskMtd = "mtd"
+
+htDiskParavirtual :: String
+htDiskParavirtual = "paravirtual"
+
+htDiskPflash :: String
+htDiskPflash = "pflash"
+
+htDiskScsi :: String
+htDiskScsi = "scsi"
+
+htDiskSd :: String
+htDiskSd = "sd"
+
+htHvmValidDiskTypes :: FrozenSet String
+htHvmValidDiskTypes = ConstantUtils.mkSet [htDiskIoemu, htDiskParavirtual]
+
+htKvmValidDiskTypes :: FrozenSet String
+htKvmValidDiskTypes =
+  ConstantUtils.mkSet [htDiskIde,
+                       htDiskMtd,
+                       htDiskParavirtual,
+                       htDiskPflash,
+                       htDiskScsi,
+                       htDiskSd]
+
+htCacheDefault :: String
+htCacheDefault = "default"
+
+htCacheNone :: String
+htCacheNone = "none"
+
+htCacheWback :: String
+htCacheWback = "writeback"
+
+htCacheWthrough :: String
+htCacheWthrough = "writethrough"
+
+htValidCacheTypes :: FrozenSet String
+htValidCacheTypes =
+  ConstantUtils.mkSet [htCacheDefault,
+                       htCacheNone,
+                       htCacheWback,
+                       htCacheWthrough]
+
+-- * Mouse types
+
+htMouseMouse :: String
+htMouseMouse = "mouse"
+
+htMouseTablet :: String
+htMouseTablet = "tablet"
+
+htKvmValidMouseTypes :: FrozenSet String
+htKvmValidMouseTypes = ConstantUtils.mkSet [htMouseMouse, htMouseTablet]
+
+-- * Boot order
+
+htBoCdrom :: String
+htBoCdrom = "cdrom"
+
+htBoDisk :: String
+htBoDisk = "disk"
+
+htBoFloppy :: String
+htBoFloppy = "floppy"
+
+htBoNetwork :: String
+htBoNetwork = "network"
+
+htKvmValidBoTypes :: FrozenSet String
+htKvmValidBoTypes =
+  ConstantUtils.mkSet [htBoCdrom, htBoDisk, htBoFloppy, htBoNetwork]
+
+-- * SPICE lossless image compression options
+
+htKvmSpiceLosslessImgComprAutoGlz :: String
+htKvmSpiceLosslessImgComprAutoGlz = "auto_glz"
+
+htKvmSpiceLosslessImgComprAutoLz :: String
+htKvmSpiceLosslessImgComprAutoLz = "auto_lz"
+
+htKvmSpiceLosslessImgComprGlz :: String
+htKvmSpiceLosslessImgComprGlz = "glz"
+
+htKvmSpiceLosslessImgComprLz :: String
+htKvmSpiceLosslessImgComprLz = "lz"
+
+htKvmSpiceLosslessImgComprOff :: String
+htKvmSpiceLosslessImgComprOff = "off"
+
+htKvmSpiceLosslessImgComprQuic :: String
+htKvmSpiceLosslessImgComprQuic = "quic"
+
+htKvmSpiceValidLosslessImgComprOptions :: FrozenSet String
+htKvmSpiceValidLosslessImgComprOptions =
+  ConstantUtils.mkSet [htKvmSpiceLosslessImgComprAutoGlz,
+                       htKvmSpiceLosslessImgComprAutoLz,
+                       htKvmSpiceLosslessImgComprGlz,
+                       htKvmSpiceLosslessImgComprLz,
+                       htKvmSpiceLosslessImgComprOff,
+                       htKvmSpiceLosslessImgComprQuic]
+
+htKvmSpiceLossyImgComprAlways :: String
+htKvmSpiceLossyImgComprAlways = "always"
+
+htKvmSpiceLossyImgComprAuto :: String
+htKvmSpiceLossyImgComprAuto = "auto"
+
+htKvmSpiceLossyImgComprNever :: String
+htKvmSpiceLossyImgComprNever = "never"
+
+htKvmSpiceValidLossyImgComprOptions :: FrozenSet String
+htKvmSpiceValidLossyImgComprOptions =
+  ConstantUtils.mkSet [htKvmSpiceLossyImgComprAlways,
+                       htKvmSpiceLossyImgComprAuto,
+                       htKvmSpiceLossyImgComprNever]
+
+-- * SPICE video stream detection
+
+htKvmSpiceVideoStreamDetectionAll :: String
+htKvmSpiceVideoStreamDetectionAll = "all"
+
+htKvmSpiceVideoStreamDetectionFilter :: String
+htKvmSpiceVideoStreamDetectionFilter = "filter"
+
+htKvmSpiceVideoStreamDetectionOff :: String
+htKvmSpiceVideoStreamDetectionOff = "off"
+
+htKvmSpiceValidVideoStreamDetectionOptions :: FrozenSet String
+htKvmSpiceValidVideoStreamDetectionOptions =
+  ConstantUtils.mkSet [htKvmSpiceVideoStreamDetectionAll,
+                       htKvmSpiceVideoStreamDetectionFilter,
+                       htKvmSpiceVideoStreamDetectionOff]
+
+-- * Security models
+
+htSmNone :: String
+htSmNone = "none"
+
+htSmPool :: String
+htSmPool = "pool"
+
+htSmUser :: String
+htSmUser = "user"
+
+htKvmValidSmTypes :: FrozenSet String
+htKvmValidSmTypes = ConstantUtils.mkSet [htSmNone, htSmPool, htSmUser]
+
+-- * Kvm flag values
+
+htKvmDisabled :: String
+htKvmDisabled = "disabled"
+
+htKvmEnabled :: String
+htKvmEnabled = "enabled"
+
+htKvmFlagValues :: FrozenSet String
+htKvmFlagValues = ConstantUtils.mkSet [htKvmDisabled, htKvmEnabled]
+
 -- * Migration type
 
 htMigrationLive :: String
@@ -2936,6 +3170,302 @@ jqtStartmsg = "startmsg"
 jqtAll :: FrozenSet String
 jqtAll = ConstantUtils.mkSet [jqtExec, jqtExpandnames, jqtLogmsg, jqtStartmsg]
 
+-- * Query resources
+
+qrCluster :: String
+qrCluster = "cluster"
+
+qrExport :: String
+qrExport = "export"
+
+qrExtstorage :: String
+qrExtstorage = "extstorage"
+
+qrGroup :: String
+qrGroup = "group"
+
+qrInstance :: String
+qrInstance = "instance"
+
+qrJob :: String
+qrJob = "job"
+
+qrLock :: String
+qrLock = "lock"
+
+qrNetwork :: String
+qrNetwork = "network"
+
+qrNode :: String
+qrNode = "node"
+
+qrOs :: String
+qrOs = "os"
+
+-- | List of resources which can be queried using 'Ganeti.OpCodes.OpQuery'
+qrViaOp :: FrozenSet String
+qrViaOp =
+  ConstantUtils.mkSet [qrCluster,
+                       qrInstance,
+                       qrNode,
+                       qrGroup,
+                       qrOs,
+                       qrExport,
+                       qrNetwork,
+                       qrExtstorage]
+
+-- | List of resources which can be queried using Local UniX Interface
+qrViaLuxi :: FrozenSet String
+qrViaLuxi = ConstantUtils.mkSet [qrLock, qrJob]
+
+-- | List of resources which can be queried using RAPI
+qrViaRapi :: FrozenSet String
+qrViaRapi = qrViaLuxi
+
+-- * Query field types
+
+qftBool :: String
+qftBool = "bool"
+
+qftNumber :: String
+qftNumber = "number"
+
+qftOther :: String
+qftOther = "other"
+
+qftText :: String
+qftText = "text"
+
+qftTimestamp :: String
+qftTimestamp = "timestamp"
+
+qftUnit :: String
+qftUnit = "unit"
+
+qftUnknown :: String
+qftUnknown = "unknown"
+
+qftAll :: FrozenSet String
+qftAll =
+  ConstantUtils.mkSet [qftBool,
+                       qftNumber,
+                       qftOther,
+                       qftText,
+                       qftTimestamp,
+                       qftUnit,
+                       qftUnknown]
+
+-- * Query result field status
+--
+-- Don't change or reuse values as they're used by clients.
+--
+-- FIXME: link with 'Ganeti.Query.Language.ResultStatus'
+
+-- | No data (e.g. RPC error), can be used instead of 'rsOffline'
+rsNodata :: Int
+rsNodata = 2
+
+rsNormal :: Int
+rsNormal = 0
+
+-- | Resource marked offline
+rsOffline :: Int
+rsOffline = 4
+
+-- | Value unavailable/unsupported for item; if this field is
+-- supported but we cannot get the data for the moment, 'rsNodata' or
+-- 'rsOffline' should be used
+rsUnavail :: Int
+rsUnavail = 3
+
+rsUnknown :: Int
+rsUnknown = 1
+
+rsAll :: FrozenSet Int
+rsAll =
+  ConstantUtils.mkSet [rsNodata,
+                       rsNormal,
+                       rsOffline,
+                       rsUnavail,
+                       rsUnknown]
+
+-- | Special field cases and their verbose/terse formatting
+rssDescription :: Map Int (String, String)
+rssDescription =
+  Map.fromList [(rsUnknown, ("(unknown)", "??")),
+                (rsNodata, ("(nodata)", "?")),
+                (rsOffline, ("(offline)", "*")),
+                (rsUnavail, ("(unavail)", "-"))]
+
+-- * Max dynamic devices
+
+maxDisks :: Int
+maxDisks = Types.maxDisks
+
+maxNics :: Int
+maxNics = Types.maxNics
+
+-- | SSCONF file prefix
+ssconfFileprefix :: String
+ssconfFileprefix = "ssconf_"
+
+-- * SSCONF keys
+
+ssClusterName :: String
+ssClusterName = "cluster_name"
+
+ssClusterTags :: String
+ssClusterTags = "cluster_tags"
+
+ssFileStorageDir :: String
+ssFileStorageDir = "file_storage_dir"
+
+ssSharedFileStorageDir :: String
+ssSharedFileStorageDir = "shared_file_storage_dir"
+
+ssMasterCandidates :: String
+ssMasterCandidates = "master_candidates"
+
+ssMasterCandidatesIps :: String
+ssMasterCandidatesIps = "master_candidates_ips"
+
+ssMasterIp :: String
+ssMasterIp = "master_ip"
+
+ssMasterNetdev :: String
+ssMasterNetdev = "master_netdev"
+
+ssMasterNetmask :: String
+ssMasterNetmask = "master_netmask"
+
+ssMasterNode :: String
+ssMasterNode = "master_node"
+
+ssNodeList :: String
+ssNodeList = "node_list"
+
+ssNodePrimaryIps :: String
+ssNodePrimaryIps = "node_primary_ips"
+
+ssNodeSecondaryIps :: String
+ssNodeSecondaryIps = "node_secondary_ips"
+
+ssOfflineNodes :: String
+ssOfflineNodes = "offline_nodes"
+
+ssOnlineNodes :: String
+ssOnlineNodes = "online_nodes"
+
+ssPrimaryIpFamily :: String
+ssPrimaryIpFamily = "primary_ip_family"
+
+ssInstanceList :: String
+ssInstanceList = "instance_list"
+
+ssReleaseVersion :: String
+ssReleaseVersion = "release_version"
+
+ssHypervisorList :: String
+ssHypervisorList = "hypervisor_list"
+
+ssMaintainNodeHealth :: String
+ssMaintainNodeHealth = "maintain_node_health"
+
+ssUidPool :: String
+ssUidPool = "uid_pool"
+
+ssNodegroups :: String
+ssNodegroups = "nodegroups"
+
+ssNetworks :: String
+ssNetworks = "networks"
+
+-- | This is not a complete SSCONF key, but the prefix for the
+-- hypervisor keys
+ssHvparamsPref :: String
+ssHvparamsPref = "hvparams_"
+
+-- * Hvparams keys
+
+ssHvparamsXenChroot :: String
+ssHvparamsXenChroot = ssHvparamsPref ++ htChroot
+
+ssHvparamsXenFake :: String
+ssHvparamsXenFake = ssHvparamsPref ++ htFake
+
+ssHvparamsXenHvm :: String
+ssHvparamsXenHvm = ssHvparamsPref ++ htXenHvm
+
+ssHvparamsXenKvm :: String
+ssHvparamsXenKvm = ssHvparamsPref ++ htKvm
+
+ssHvparamsXenLxc :: String
+ssHvparamsXenLxc = ssHvparamsPref ++ htLxc
+
+ssHvparamsXenPvm :: String
+ssHvparamsXenPvm = ssHvparamsPref ++ htXenPvm
+
+validSsHvparamsKeys :: FrozenSet String
+validSsHvparamsKeys =
+  ConstantUtils.mkSet [ssHvparamsXenChroot,
+                       ssHvparamsXenLxc,
+                       ssHvparamsXenFake,
+                       ssHvparamsXenHvm,
+                       ssHvparamsXenKvm,
+                       ssHvparamsXenPvm]
+
+ssFilePerms :: Int
+ssFilePerms = 0o444
+
+-- | Cluster wide default parameters
+defaultEnabledHypervisor :: String
+defaultEnabledHypervisor = htXenPvm
+
+hvcGlobals :: FrozenSet String
+hvcGlobals =
+  ConstantUtils.mkSet [hvMigrationBandwidth,
+                       hvMigrationMode,
+                       hvMigrationPort,
+                       hvXenCmd]
+
+ndcGlobals :: FrozenSet String
+ndcGlobals = ConstantUtils.mkSet [ndExclusiveStorage]
+
+-- | 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)
+ispecsMinmaxDefaults =
+  Map.fromList
+  [(ispecsMin,
+    Map.fromList
+    [(ConstantUtils.ispecMemSize, Types.iSpecMemorySize Types.defMinISpec),
+     (ConstantUtils.ispecCpuCount, Types.iSpecCpuCount Types.defMinISpec),
+     (ConstantUtils.ispecDiskCount, Types.iSpecDiskCount Types.defMinISpec),
+     (ConstantUtils.ispecDiskSize, Types.iSpecDiskSize Types.defMinISpec),
+     (ConstantUtils.ispecNicCount, Types.iSpecNicCount Types.defMinISpec),
+     (ConstantUtils.ispecSpindleUse, Types.iSpecSpindleUse Types.defMinISpec)]),
+   (ispecsMax,
+    Map.fromList
+    [(ConstantUtils.ispecMemSize, Types.iSpecMemorySize Types.defMaxISpec),
+     (ConstantUtils.ispecCpuCount, Types.iSpecCpuCount Types.defMaxISpec),
+     (ConstantUtils.ispecDiskCount, Types.iSpecDiskCount Types.defMaxISpec),
+     (ConstantUtils.ispecDiskSize, Types.iSpecDiskSize Types.defMaxISpec),
+     (ConstantUtils.ispecNicCount, Types.iSpecNicCount Types.defMaxISpec),
+     (ConstantUtils.ispecSpindleUse, Types.iSpecSpindleUse Types.defMaxISpec)])]
+
+masterPoolSizeDefault :: Int
+masterPoolSizeDefault = 10
+
+-- * Exclusive storage
+
+-- | Error margin used to compare physical disks
+partMargin :: Double
+partMargin = 0.01
+
+-- | Space reserved when creating instance disks
+partReserved :: Double
+partReserved = 0.02
+
 -- * Confd
 
 confdProtocolVersion :: Int
@@ -3087,6 +3617,33 @@ confdDefaultReqCoverage = 6
 confdClientExpireTimeout :: Int
 confdClientExpireTimeout = 10
 
+-- | Maximum UDP datagram size.
+--
+-- On IPv4: 64K - 20 (ip header size) - 8 (udp header size) = 65507
+-- On IPv6: 64K - 40 (ip6 header size) - 8 (udp header size) = 65487
+--   (assuming we can't use jumbo frames)
+-- We just set this to 60K, which should be enough
+maxUdpDataSize :: Int
+maxUdpDataSize = 61440
+
+-- * User-id pool minimum/maximum acceptable user-ids
+
+uidpoolUidMin :: Int
+uidpoolUidMin = 0
+
+-- | Assuming 32 bit user-ids
+uidpoolUidMax :: Integer
+uidpoolUidMax = 2 ^ 32 - 1
+
+-- | Name or path of the pgrep command
+pgrep :: String
+pgrep = "pgrep"
+
+-- | Name of the node group that gets created at cluster init or
+-- upgrade
+initialNodeGroupName :: String
+initialNodeGroupName = "default"
+
 -- * Possible values for NodeGroup.alloc_policy
 
 allocPolicyLastResort :: String
@@ -3116,6 +3673,55 @@ qemuimgPath = AutoConf.qemuimgPath
 htools :: Bool
 htools = AutoConf.htools
 
+-- | The hail iallocator
+iallocHail :: String
+iallocHail = "hail"
+
+-- * Fake opcodes for functions that have hooks attached to them via
+-- backend.RunLocalHooks
+
+fakeOpMasterTurndown :: String
+fakeOpMasterTurndown = "OP_CLUSTER_IP_TURNDOWN"
+
+fakeOpMasterTurnup :: String
+fakeOpMasterTurnup = "OP_CLUSTER_IP_TURNUP"
+
+-- * SSH key types
+
+sshkDsa :: String
+sshkDsa = "dsa"
+
+sshkRsa :: String
+sshkRsa = "rsa"
+
+sshkAll :: FrozenSet String
+sshkAll = ConstantUtils.mkSet [sshkRsa, sshkDsa]
+
+-- * SSH authorized key types
+
+sshakDss :: String
+sshakDss = "ssh-dss"
+
+sshakRsa :: String
+sshakRsa = "ssh-rsa"
+
+sshakAll :: FrozenSet String
+sshakAll = ConstantUtils.mkSet [sshakDss, sshakRsa]
+
+-- * SSH setup
+
+sshsClusterName :: String
+sshsClusterName = "cluster_name"
+
+sshsSshHostKey :: String
+sshsSshHostKey = "ssh_host_key"
+
+sshsSshRootKey :: String
+sshsSshRootKey = "ssh_root_key"
+
+sshsNodeDaemonCertificate :: String
+sshsNodeDaemonCertificate = "node_daemon_certificate"
+
 -- * Key files for SSH daemon
 
 sshHostDsaPriv :: String
@@ -3130,6 +3736,45 @@ sshHostRsaPriv = sshConfigDir ++ "/ssh_host_rsa_key"
 sshHostRsaPub :: String
 sshHostRsaPub = sshHostRsaPriv ++ ".pub"
 
+-- * Node daemon setup
+
+ndsClusterName :: String
+ndsClusterName = "cluster_name"
+
+ndsNodeDaemonCertificate :: String
+ndsNodeDaemonCertificate = "node_daemon_certificate"
+
+ndsSsconf :: String
+ndsSsconf = "ssconf"
+
+ndsStartNodeDaemon :: String
+ndsStartNodeDaemon = "start_node_daemon"
+
+-- * The source reasons for the execution of an OpCode
+
+opcodeReasonSrcClient :: String
+opcodeReasonSrcClient = "gnt:client"
+
+opcodeReasonSrcNoded :: String
+opcodeReasonSrcNoded = "gnt:daemon:noded"
+
+opcodeReasonSrcOpcode :: String
+opcodeReasonSrcOpcode = "gnt:opcode"
+
+opcodeReasonSrcRlib2 :: String
+opcodeReasonSrcRlib2 = "gnt:library:rlib2"
+
+opcodeReasonSrcUser :: String
+opcodeReasonSrcUser = "gnt:user"
+
+opcodeReasonSources :: FrozenSet String
+opcodeReasonSources =
+  ConstantUtils.mkSet [opcodeReasonSrcClient,
+                       opcodeReasonSrcNoded,
+                       opcodeReasonSrcOpcode,
+                       opcodeReasonSrcRlib2,
+                       opcodeReasonSrcUser]
+
 -- | Path generating random UUID
 randomUuidFile :: String
 randomUuidFile = ConstantUtils.randomUuidFile
@@ -3154,16 +3799,16 @@ autoRepairTagSuspended = autoRepairTagPrefix ++ "suspend:"
 -- * Auto-repair levels
 
 autoRepairFailover :: String
-autoRepairFailover = "failover"
+autoRepairFailover = Types.autoRepairTypeToRaw ArFailover
 
 autoRepairFixStorage :: String
-autoRepairFixStorage = "fix-storage"
+autoRepairFixStorage = Types.autoRepairTypeToRaw ArFixStorage
 
 autoRepairMigrate :: String
-autoRepairMigrate = "migrate"
+autoRepairMigrate = Types.autoRepairTypeToRaw ArMigrate
 
 autoRepairReinstall :: String
-autoRepairReinstall = "reinstall"
+autoRepairReinstall = Types.autoRepairTypeToRaw ArReinstall
 
 autoRepairAllTypes :: FrozenSet String
 autoRepairAllTypes =
@@ -3175,13 +3820,13 @@ autoRepairAllTypes =
 -- * Auto-repair results
 
 autoRepairEnoperm :: String
-autoRepairEnoperm = "enoperm"
+autoRepairEnoperm = Types.autoRepairResultToRaw ArEnoperm
 
 autoRepairFailure :: String
-autoRepairFailure = "failure"
+autoRepairFailure = Types.autoRepairResultToRaw ArFailure
 
 autoRepairSuccess :: String
-autoRepairSuccess = "success"
+autoRepairSuccess = Types.autoRepairResultToRaw ArSuccess
 
 autoRepairAllResults :: FrozenSet String
 autoRepairAllResults =