Change SSH key types to a proper Haskell sum type
authorHrvoje Ribicic <riba@google.com>
Sun, 11 Oct 2015 23:03:09 +0000 (19:03 -0400)
committerHrvoje Ribicic <riba@google.com>
Fri, 20 Nov 2015 10:13:54 +0000 (11:13 +0100)
This will allow us to perform validation of opcode params that are SSH
key types.

Signed-off-by: Hrvoje Ribicic <riba@google.com>
Reviewed-by: Helga Velroyen <helgav@google.com>

src/Ganeti/Constants.hs
src/Ganeti/Types.hs

index d20a8da..eedd493 100644 (file)
@@ -4680,13 +4680,13 @@ cryptoOptionSerialNo = "serial_no"
 -- * SSH key types
 
 sshkDsa :: String
-sshkDsa = "dsa"
+sshkDsa = Types.sshKeyTypeToRaw DSA
 
 sshkEcdsa :: String
-sshkEcdsa = "ecdsa"
+sshkEcdsa = Types.sshKeyTypeToRaw ECDSA
 
 sshkRsa :: String
-sshkRsa = "rsa"
+sshkRsa = Types.sshKeyTypeToRaw RSA
 
 sshkAll :: FrozenSet String
 sshkAll = ConstantUtils.mkSet [sshkRsa, sshkDsa, sshkEcdsa]
index f311827..9823189 100644 (file)
@@ -172,6 +172,8 @@ module Ganeti.Types
   , hotplugTargetToRaw
   , HotplugAction(..)
   , hotplugActionToRaw
+  , SshKeyType(..)
+  , sshKeyTypeToRaw
   , Private(..)
   , showPrivateJSObject
   , Secret(..)
@@ -952,6 +954,15 @@ $(THH.declareLADT ''String "HotplugTarget"
   ])
 $(THH.makeJSONInstance ''HotplugTarget)
 
+-- | SSH key type.
+
+$(THH.declareLADT ''String "SshKeyType"
+  [ ("RSA", "rsa")
+  , ("DSA", "dsa")
+  , ("ECDSA", "ecdsa")
+  ])
+$(THH.makeJSONInstance ''SshKeyType)
+
 -- * Private type and instances
 
 redacted :: String