Revision 80a0546b htools/Ganeti/Utils.hs
b/htools/Ganeti/Utils.hs | ||
---|---|---|
44 | 44 |
, exitWhen |
45 | 45 |
, exitUnless |
46 | 46 |
, rStripSpace |
47 |
, newUUID |
|
47 | 48 |
) where |
48 | 49 |
|
49 | 50 |
import Data.Char (toUpper, isAlphaNum, isDigit, isSpace) |
... | ... | |
53 | 54 |
import Debug.Trace |
54 | 55 |
|
55 | 56 |
import Ganeti.BasicTypes |
57 |
import qualified Ganeti.Constants as C |
|
56 | 58 |
import System.IO |
57 | 59 |
import System.Exit |
58 | 60 |
|
... | ... | |
277 | 279 |
-- expensive, should only be run on small strings. |
278 | 280 |
rStripSpace :: String -> String |
279 | 281 |
rStripSpace = reverse . dropWhile isSpace . reverse |
282 |
|
|
283 |
-- | Returns a random UUID. |
|
284 |
-- This is a Linux-specific method as it uses the /proc filesystem. |
|
285 |
newUUID :: IO String |
|
286 |
newUUID = do |
|
287 |
contents <- readFile C.randomUuidFile |
|
288 |
let stripNewlines = reverse . dropWhile (=='\n') . reverse |
|
289 |
return $! stripNewlines $ take 128 contents |
Also available in: Unified diff