diff options
author | Scott Moser <smoser@nelson> | 2010-01-06 01:40:29 -0500 |
---|---|---|
committer | Scott Moser <smoser@nelson> | 2010-01-06 01:40:29 -0500 |
commit | 857dab6b5dfc69cf398e6f8f873b4ef472b9e635 (patch) | |
tree | 6a223f923c0f3e6776cdf38ec76c27cd99055d22 /ec2init/__init__.py | |
parent | d9451ac2d25078dd6b2964bae8a1807474271923 (diff) | |
download | vyos-cloud-init-857dab6b5dfc69cf398e6f8f873b4ef472b9e635.tar.gz vyos-cloud-init-857dab6b5dfc69cf398e6f8f873b4ef472b9e635.zip |
support compressed user data, use cPickle instead of pickle
Diffstat (limited to 'ec2init/__init__.py')
-rw-r--r-- | ec2init/__init__.py | 23 |
1 files changed, 20 insertions, 3 deletions
diff --git a/ec2init/__init__.py b/ec2init/__init__.py index 05404c3a..60a87275 100644 --- a/ec2init/__init__.py +++ b/ec2init/__init__.py @@ -21,6 +21,7 @@ import os from configobj import ConfigObj import boto.utils +import cPickle datadir = '/var/lib/cloud/data' cachedir = datadir + '/cache' @@ -36,7 +37,7 @@ class EC2Init: def restore_from_cache(self): try: f=open(cachedir + "/obj.pkl", "rb") - data = pickle.load(f) + data = cPickle.load(f) self.datasource = data return True except: @@ -45,7 +46,7 @@ class EC2Init: def write_to_cache(self): try: f=open(cachedir + "/obj.pkl", "wb") - data = pickle.dump(self.datasource,f) + data = cPickle.dump(self.datasource,f) return True except: return False @@ -60,7 +61,8 @@ class EC2Init: if s.get_data(): self.datasource = s return - except: + except Exception as e: + print e pass raise Exception("Could not find data source") @@ -77,3 +79,18 @@ class EC2Init: import subprocess subprocess.Popen(['initctl', 'CFG_FILE=%s' % user_config]).communicate() + +# if 'str' is compressed return decompressed otherwise return it +def decomp_str(str): + import StringIO + import gzip + try: + uncomp = gzip.GzipFile(None,"rb",1,StringIO.StringIO(str)).read() + return(uncomp) + except: + return(str) + + +# preprocess the user data (include / uncompress) +def preprocess_user_data(ud): + return(decomp_str(ud)) |