From 6f58655f2893a2a8e2edc85130d98294d5cf4ad1 Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Wed, 6 Jan 2010 14:05:25 -0500 Subject: put upstart files in upstart/, minor other changes adding cat-cloud-config.conf, a debug file that just cats the config --- cloud-init-run-module.py | 4 ++-- ec2-init.py | 2 +- ec2init.conf | 7 ------- ec2init/DataSource.py | 3 +++ ec2init/__init__.py | 22 +++++++++++++++++++--- setup.py | 2 +- upstart/cat-cloud-config.conf | 7 +++++++ upstart/ec2init.conf | 7 +++++++ 8 files changed, 40 insertions(+), 14 deletions(-) delete mode 100644 ec2init.conf create mode 100644 upstart/cat-cloud-config.conf create mode 100644 upstart/ec2init.conf diff --git a/cloud-init-run-module.py b/cloud-init-run-module.py index 5a35de5d..0e32c63b 100755 --- a/cloud-init-run-module.py +++ b/cloud-init-run-module.py @@ -4,7 +4,7 @@ import sys import ec2init def Usage(out = sys.stdout): - out.write("Usage: cloud-init-run-module freq sem-name mod-name [args]") + out.write("Usage: cloud-init-run-module freq sem-name mod-name [args]\n") def main(): # expect to be called with @@ -30,7 +30,7 @@ def main(): import os cfg_path = None - cfg_env_name = "CLOUD_CFG" + cfg_env_name = ec2init.cfg_env_name if os.environ.has_key(cfg_env_name): cfg_path = os.environ[cfg_env_name] diff --git a/ec2-init.py b/ec2-init.py index 0b0e308d..90da7dc6 100755 --- a/ec2-init.py +++ b/ec2-init.py @@ -20,7 +20,7 @@ def main(): print "user data is:" + cloud.get_user_data() # store the metadata - # TODO: cloud.update_cache() + cloud.update_cache() # parse the user data (ec2-run-userdata.py) # TODO: cloud.consume_user_data() diff --git a/ec2init.conf b/ec2init.conf deleted file mode 100644 index 2168726e..00000000 --- a/ec2init.conf +++ /dev/null @@ -1,7 +0,0 @@ -start on (local-filesystems and net-device-up IFACE=eth0) - -task - -console output - -exec /usr/bin/ec2-init start diff --git a/ec2init/DataSource.py b/ec2init/DataSource.py index b940c564..23e585e2 100644 --- a/ec2init/DataSource.py +++ b/ec2init/DataSource.py @@ -24,3 +24,6 @@ class DataSource: self.userdata = ec2init.preprocess_user_data(self.userdata_raw) return self.userdata + + def get_user_data_raw(self): + return(self.userdata_raw) diff --git a/ec2init/__init__.py b/ec2init/__init__.py index 77f96760..fe627ecd 100644 --- a/ec2init/__init__.py +++ b/ec2init/__init__.py @@ -32,6 +32,8 @@ cachedir = datadir + '/cache' user_data = datadir + '/user-data.txt' user_data_raw = datadir + '/user-data.raw' user_config = datadir + '/user-config.txt' +data_source_cache = cachedir + '/obj.pkl' +cfg_env_name = "CLOUD_CFG" import DataSourceEc2 @@ -40,7 +42,7 @@ class EC2Init: def restore_from_cache(self): try: - f=open(cachedir + "/obj.pkl", "rb") + f=open(data_source_cache, "rb") data = cPickle.load(f) self.datasource = data return True @@ -49,7 +51,7 @@ class EC2Init: def write_to_cache(self): try: - f=open(cachedir + "/obj.pkl", "wb") + f=open(data_source_cache, "wb") data = cPickle.dump(self.datasource,f) return True except: @@ -73,6 +75,19 @@ class EC2Init: def get_user_data(self): return(self.datasource.get_user_data()) + def update_cache(self): + self.write_to_cache() + self.store_user_data() + + def store_user_data(self): + f = open(user_data_raw,"wb") + f.write(self.datasource.get_user_data_raw()) + f.close() + + f = open(user_data,"wb") + f.write(self.get_user_data()) + f.close() + def get_cfg_option_bool(self, key, default=None): val = self.config.get(key, default) if val.lower() in ['1', 'on', 'yes']: @@ -81,7 +96,8 @@ class EC2Init: def initctl_emit(self): import subprocess - subprocess.Popen(['initctl', 'CFG_FILE=%s' % user_config]).communicate() + subprocess.Popen(['initctl', 'emit', 'cloud-config', + '%s=%s' % (cfg_env_name,user_config)]).communicate() # if 'str' is compressed return decompressed otherwise return it diff --git a/setup.py b/setup.py index 0f86cb54..55ec31d1 100755 --- a/setup.py +++ b/setup.py @@ -41,7 +41,7 @@ setup(name='EC2-init', ], data_files=[('/etc/ec2-init', ['ec2-config.cfg']), ('/etc/ec2-init/templates', glob('templates/*')), - ('/etc/init', ['ec2init.conf']), + ('/etc/init', glob('upstart/*.conf')), ('/usr/share/ec2-init', ['ec2-init-appliance-ebs-volume-mount.sh']), ], ) diff --git a/upstart/cat-cloud-config.conf b/upstart/cat-cloud-config.conf new file mode 100644 index 00000000..3f053896 --- /dev/null +++ b/upstart/cat-cloud-config.conf @@ -0,0 +1,7 @@ +description "Cat the Config" + +start on cloud-config +console output +task + +exec cloud-init-run-module once_per_ami catconfig execute cat $CLOUD_CFG diff --git a/upstart/ec2init.conf b/upstart/ec2init.conf new file mode 100644 index 00000000..2168726e --- /dev/null +++ b/upstart/ec2init.conf @@ -0,0 +1,7 @@ +start on (local-filesystems and net-device-up IFACE=eth0) + +task + +console output + +exec /usr/bin/ec2-init start -- cgit v1.2.3