summaryrefslogtreecommitdiffstats
path: root/nova/utils.py
diff options
context:
space:
mode:
authorNaveed Massjouni <naveedm9@gmail.com>2011-02-18 13:27:30 -0500
committerNaveed Massjouni <naveedm9@gmail.com>2011-02-18 13:27:30 -0500
commita55fefdd78ac984b366c8e1701cbbd8f5ad18e97 (patch)
tree528927e45c4ff8d4bbc0b3850da10454f12baeb3 /nova/utils.py
parent4673afddcb5a1069f75fb3493e43498ed1de11f9 (diff)
parent5dfa5ce7d1374509fea51f8d0b132ea865f34dc6 (diff)
downloadnova-a55fefdd78ac984b366c8e1701cbbd8f5ad18e97.tar.gz
nova-a55fefdd78ac984b366c8e1701cbbd8f5ad18e97.tar.xz
nova-a55fefdd78ac984b366c8e1701cbbd8f5ad18e97.zip
Merging trunk to my branch. Fixed conflicts in Authors file and .mailmap.
Diffstat (limited to 'nova/utils.py')
-rw-r--r--nova/utils.py25
1 files changed, 24 insertions, 1 deletions
diff --git a/nova/utils.py b/nova/utils.py
index 8d7ff1f64..42efa0008 100644
--- a/nova/utils.py
+++ b/nova/utils.py
@@ -20,13 +20,14 @@
System-level utilities and helper functions.
"""
+import base64
import datetime
import inspect
import json
import os
import random
-import subprocess
import socket
+import string
import struct
import sys
import time
@@ -36,6 +37,7 @@ import netaddr
from eventlet import event
from eventlet import greenthread
+from eventlet.green import subprocess
from nova import exception
from nova.exception import ProcessExecutionError
@@ -235,6 +237,15 @@ def generate_mac():
return ':'.join(map(lambda x: "%02x" % x, mac))
+def generate_password(length=20):
+ """Generate a random sequence of letters and digits
+ to be used as a password. Note that this is not intended
+ to represent the ultimate in security.
+ """
+ chrs = string.letters + string.digits
+ return "".join([random.choice(chrs) for i in xrange(length)])
+
+
def last_octet(address):
return int(address.split(".")[-1])
@@ -476,3 +487,15 @@ def dumps(value):
def loads(s):
return json.loads(s)
+
+
+def ensure_b64_encoding(val):
+ """Safety method to ensure that values expected to be base64-encoded
+ actually are. If they are, the value is returned unchanged. Otherwise,
+ the encoded value is returned.
+ """
+ try:
+ dummy = base64.decode(val)
+ return val
+ except TypeError:
+ return base64.b64encode(val)