diff --git a/slapos/container/prepare.py b/slapos/container/prepare.py index 028c2d8d9cfc6c33bc8f7d83e1a8928bb6f9ff30..0256611382c4d1a419b5633ebd9b10790355be3d 100644 --- a/slapos/container/prepare.py +++ b/slapos/container/prepare.py @@ -26,25 +26,30 @@ def main(sr_directory, partition_list): lock.acquire(timeout=0) slapcontainer_conf = ConfigParser.ConfigParser() slapcontainer_conf.read(slapcontainer_filename) - - requested_status = slapcontainer_conf.get('requested', 'status') - - if not slapcontainer_conf.has_section('current'): - slapcontainer_conf.add_section('current') - if not slapcontainer_conf.has_option('current', 'created'): - slapcontainer_conf.set('current', 'created', 'no') - if not slapcontainer_conf.has_option('current', 'status'): - slapcontainer_conf.set('current', 'status', 'stopped') - - if requested_status == 'started': - start(sr_directory, partition_path, - slapcontainer_conf) - else: - stop(sr_directory, partition_path, - slapcontainer_conf) - - with open(slapcontainer_filename, 'w') as slapcontainer_fp: - slapcontainer_conf.write(slapcontainer_fp) + try: + + requested_status = slapcontainer_conf.get('requested', + 'status') + + if not slapcontainer_conf.has_section('current'): + slapcontainer_conf.add_section('current') + if not slapcontainer_conf.has_option('current', 'created'): + slapcontainer_conf.set('current', 'created', 'no') + if not slapcontainer_conf.has_option('current', 'status'): + slapcontainer_conf.set('current', 'status', 'stopped') + + if requested_status == 'started': + if slapcontainer_conf.get('current', 'created') == 'no': + create(sr_directory, partition_path, slapcontainer_conf) + slapcontainer_conf.set('current', 'created', 'yes') + start(sr_directory, partition_path, + slapcontainer_conf) + else: + stop(sr_directory, partition_path, + slapcontainer_conf) + finally: + with open(slapcontainer_filename, 'w') as slapcontainer_fp: + slapcontainer_conf.write(slapcontainer_fp) except lockfile.LockTimeout: # Can't do anything, we'll see on the next run pass @@ -54,11 +59,6 @@ def main(sr_directory, partition_list): def start(sr_directory, partition_path, conf): - if conf.get('current', 'created') == 'no': - create(sr_directory, partition_path, conf) - - conf.set('current', 'created', 'yes') - lxc_start = os.path.join(sr_directory, 'parts/lxc/bin/lxc-start') config_filename = os.path.join(partition_path, 'config')