projects
/
ganeti-local
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
LUSetInstanceParams: save cluster
[ganeti-local]
/
lib
/
utils.py
diff --git
a/lib/utils.py
b/lib/utils.py
index
370ba62
..
48388ba
100644
(file)
--- a/
lib/utils.py
+++ b/
lib/utils.py
@@
-29,7
+29,6
@@
the command line scripts.
import sys
import os
import sys
import os
-import sha
import time
import subprocess
import re
import time
import subprocess
import re
@@
-47,6
+46,12
@@
import signal
from cStringIO import StringIO
from cStringIO import StringIO
+try:
+ from hashlib import sha1
+except ImportError:
+ import sha
+ sha1 = sha.new
+
from ganeti import errors
from ganeti import constants
from ganeti import errors
from ganeti import constants
@@
-337,7
+342,7
@@
def _FingerprintFile(filename):
f = open(filename)
f = open(filename)
- fp = sha.sha()
+ fp = sha1()
while True:
data = f.read(4096)
if not data:
while True:
data = f.read(4096)
if not data:
@@
-1186,7
+1191,7
@@
def GenerateSecret():
@return: a sha1 hexdigest of a block of 64 random bytes
"""
@return: a sha1 hexdigest of a block of 64 random bytes
"""
- return sha.new(os.urandom(64)).hexdigest()
+ return sha1(os.urandom(64)).hexdigest()
def EnsureDirs(dirs):
def EnsureDirs(dirs):
@@
-1780,6
+1785,13
@@
def SetupLogging(logfile, debug=False, stderr_logging=False, program="",
# we need to re-raise the exception
raise
# we need to re-raise the exception
raise
+def IsNormAbsPath(path):
+ """Check whether a path is absolute and also normalized
+
+ This avoids things like /dir/../../other/path to be valid.
+
+ """
+ return os.path.normpath(path) == path and os.path.isabs(path)
def TailFile(fname, lines=20):
"""Return the last lines from a file.
def TailFile(fname, lines=20):
"""Return the last lines from a file.
@@
-1828,6
+1840,16
@@
def SafeEncode(text):
return text
return text
+def CommaJoin(names):
+ """Nicely join a set of identifiers.
+
+ @param names: set, list or tuple
+ @return: a string with the formatted results
+
+ """
+ return ", ".join(["'%s'" % val for val in names])
+
+
def LockedMethod(fn):
"""Synchronized object access decorator.
def LockedMethod(fn):
"""Synchronized object access decorator.