module Puppet.Language.NativeTypes.SshSecure
( nativeSshSecure
) where
import Puppet.Language.NativeTypes.Helpers
nativeSshSecure :: (NativeTypeName, NativeTypeMethods)
nativeSshSecure = ("ssh_authorized_key_secure", nativetypemethods parameterfunctions (userOrTarget >=> keyIfPresent))
parameterfunctions :: [(Text, [Text -> NativeTypeValidate])]
parameterfunctions =
[ ("type", [string, defaultvalue "ssh-rsa", values ["rsa", "dsa", "ssh-rsa", "ssh-dss"]])
, ("key", [string])
, ("user", [string])
, ("ensure", [defaultvalue "present", string, values ["present", "absent", "role"]])
, ("target", [string])
, ("options", [rarray, strings])
]
userOrTarget :: NativeTypeValidate
userOrTarget res =
case (res ^. rattributes & has (ix "user"), res ^. rattributes & has (ix "target")) of
(False, False) -> Left "Parameters user or target are mandatory"
_ -> Right res
keyIfPresent :: NativeTypeValidate
keyIfPresent res =
case (res ^. rattributes . at "key", res ^. rattributes . at "ensure") of
(Just _, Just "present") -> Right res
(_, Just "absent") -> Right res
_ -> Left "Parameter key is mandatory when the resource is present"