From 67880491a11f0758fc15b17e092dc57c39153ca5 Mon Sep 17 00:00:00 2001 From: Sharif Olorin Date: Thu, 19 Feb 2015 04:09:03 +0000 Subject: [PATCH] Add keyring option to vault program to set the CEPH_KEYRING envvar So we don't have runtime behavior dependent on a mix of CLI options and environment variables. Fixes GitHub issue #79. --- src/Vault.hs | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/Vault.hs b/src/Vault.hs index e5f098d..e96e741 100644 --- a/src/Vault.hs +++ b/src/Vault.hs @@ -20,6 +20,7 @@ import Data.Word (Word64) import Options.Applicative hiding (Parser, option) import qualified Options.Applicative as O import System.Directory +import System.Environment import System.Log.Logger import Text.Read import Text.Trifecta @@ -39,6 +40,7 @@ data Options = Options , period :: Int , bound :: Int , name :: String + , keyring :: String , component :: Component } data Component = Broker @@ -61,6 +63,7 @@ optionsParser Options{..} = Options <$> parsePool <*> parsePeriod <*> parseBound <*> parseName + <*> parseKeyring <*> parseComponents where parsePool = strOption $ @@ -123,6 +126,13 @@ optionsParser Options{..} = Options <$> parsePool <> showDefault <> help "Identifiable name for the daemon. Useful for telemetrics." + parseKeyring = strOption $ + long "keyring" + <> short 'k' + <> metavar "CEPH-KEYRING" + <> value "" + <> help "Path to Ceph keyring file. If set, this will override the CEPH_KEYRING environment variable." + parseComponents = subparser ( parseBrokerComponent <> parseReaderComponent @@ -196,6 +206,11 @@ possibleKeys = parseArgsWithConfig :: FilePath -> IO Options parseArgsWithConfig = parseConfig >=> execParser . helpfulParser +-- If set, override CEPH_KEYRING envvar (used by librados). +updateCephKeyring :: String -> IO () +updateCephKeyring "" = return () +updateCephKeyring k = setEnv "CEPH_KEYRING" k + -- -- Main program entry point -- @@ -208,6 +223,8 @@ main = do | quiet = Quiet | otherwise = Normal + updateCephKeyring keyring + quit <- initializeProgram (package ++ "-" ++ version) level -- Run daemon(s, at present just one). These are all expected to fork