Commit 9d3867b1 authored by Iustin Pop's avatar Iustin Pop
Browse files

Add constants for two values which we re-evaluate



Two constants which we use as Integer are defined as Int in
Constants.hs (coming from constants.py), so we do the conversion every
time we use it. Let's move them to top-level names, so that the
conversion is only done once.
Signed-off-by: default avatarIustin Pop <iustin@google.com>
Reviewed-by: default avatarGuido Trotter <ultrotter@google.com>
parent 5448799c
...@@ -100,6 +100,10 @@ configReloadTimeout = C.confdConfigReloadTimeout * 1000000 ...@@ -100,6 +100,10 @@ configReloadTimeout = C.confdConfigReloadTimeout * 1000000
configReloadRatelimit :: Int configReloadRatelimit :: Int
configReloadRatelimit = C.confdConfigReloadRatelimit * 1000000 configReloadRatelimit = C.confdConfigReloadRatelimit * 1000000
-- | Ratelimit timeout in seconds, as an 'Integer'.
reloadRatelimitSec :: Integer
reloadRatelimitSec = fromIntegral C.confdConfigReloadRatelimit
-- | Initial poll round. -- | Initial poll round.
initialPoll :: ReloadModel initialPoll :: ReloadModel
initialPoll = ReloadPoll 0 initialPoll = ReloadPoll 0
...@@ -448,8 +452,7 @@ onInotify inotify path cref mstate _ = ...@@ -448,8 +452,7 @@ onInotify inotify path cref mstate _ =
ctime <- getCurrentTime ctime <- getCurrentTime
(newfstat, _) <- safeUpdateConfig path (reloadFStat state) cref (newfstat, _) <- safeUpdateConfig path (reloadFStat state) cref
let state' = state { reloadFStat = newfstat, reloadTime = ctime } let state' = state { reloadFStat = newfstat, reloadTime = ctime }
if abs (reloadTime state - ctime) < if abs (reloadTime state - ctime) < reloadRatelimitSec
fromIntegral C.confdConfigReloadRatelimit
then do then do
mode <- moveToPolling "too many reloads" inotify path cref mstate mode <- moveToPolling "too many reloads" inotify path cref mstate
return state' { reloadModel = mode } return state' { reloadModel = mode }
......
...@@ -44,6 +44,10 @@ import qualified Ganeti.Path as Path ...@@ -44,6 +44,10 @@ import qualified Ganeti.Path as Path
import Ganeti.JSON import Ganeti.JSON
import Ganeti.Utils import Ganeti.Utils
-- | Type-adjusted max clock skew constant.
maxClockSkew :: Integer
maxClockSkew = fromIntegral C.confdMaxClockSkew
-- | Returns the HMAC key. -- | Returns the HMAC key.
getClusterHmac :: IO HashKey getClusterHmac :: IO HashKey
getClusterHmac = Path.confdHmacKey >>= fmap B.unpack . B.readFile getClusterHmac = Path.confdHmacKey >>= fmap B.unpack . B.readFile
...@@ -64,7 +68,7 @@ parseMessage :: HashKey -> String -> Integer ...@@ -64,7 +68,7 @@ parseMessage :: HashKey -> String -> Integer
parseMessage hmac msg curtime = do parseMessage hmac msg curtime = do
(salt, origmsg, request) <- parseRequest hmac msg (salt, origmsg, request) <- parseRequest hmac msg
ts <- tryRead "Parsing timestamp" salt::Result Integer ts <- tryRead "Parsing timestamp" salt::Result Integer
if abs (ts - curtime) > fromIntegral C.confdMaxClockSkew if abs (ts - curtime) > maxClockSkew
then fail "Too old/too new timestamp or clock skew" then fail "Too old/too new timestamp or clock skew"
else return (origmsg, request) else return (origmsg, request)
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment