userdata.py fixed

This commit is contained in:
Dmitry Teselkin 2013-03-07 16:21:14 +04:00
parent 08dea53445
commit c1908d9e21

View File

@ -30,18 +30,18 @@ from cloudbaseinit.plugins.base import *
LOG = logging.getLogger(__name__) LOG = logging.getLogger(__name__)
opts = [ opts = [
cfg.StrOpt('user-data_folder', default='cloud-data', cfg.StrOpt('user_data_folder', default='cloud-data',
help='Specifies a folder to store multipart data files.'), help='Specifies a folder to store multipart data files.'),
] ]
CONF = cfg.CONF CONF = cfg.CONF
CONF.register_opts(opts) CONF.register_opts(opts)
class UserDataPlugin(): class UserDataPlugin():
def __init__(self, cfg=CONF): def __init__(self, cfg=CONF):
self.cfg = cfg self.cfg = cfg
self.msg = None self.msg = None
return return
def execute(self, service): def execute(self, service):
user_data = service.get_user_data('openstack') user_data = service.get_user_data('openstack')
@ -50,33 +50,33 @@ class UserDataPlugin():
LOG.debug('User data content:\n%s' % user_data) LOG.debug('User data content:\n%s' % user_data)
if user_data.starts_with('Content-Type: multipart'): if user_data.starts_with('Content-Type: multipart'):
for part in self.parse_MIME(user_data): for part in self.parse_MIME(user_data):
self.process_part(part) self.process_part(part)
else: else:
self.handle(user_data) self.handle(user_data)
return return
def process_part(self, part): def process_part(self, part):
if part.get_filename() == 'cfn-userdata': if part.get_filename() == 'cfn-userdata':
self.handle(part.get_payload()) self.handle(part.get_payload())
return return
def parse_MIME(self, user_data): def parse_MIME(self, user_data):
folder = self.cfg.user-data_folder folder = self.cfg.user_data_folder
self.create_folder(folder) self.create_folder(folder)
self.msg = email.message_from_string(user_data) self.msg = email.message_from_string(user_data)
return self.msg.walk() return self.msg.walk()
def create_folder(self, folder): def create_folder(self, folder):
try: try:
os.mkdir(folder) os.mkdir(folder)
except os.OSError, e: except os.OSError, e:
if e.errno != errno.EEXIST: if e.errno != errno.EEXIST:
raise e raise e
return return
def handle(self, user_data): def handle(self, user_data):