diff --git a/heat/cloudinit/loguserdata.py b/heat/cloudinit/loguserdata.py index 521f50985d..2adcccd78f 100644 --- a/heat/cloudinit/loguserdata.py +++ b/heat/cloudinit/loguserdata.py @@ -6,6 +6,7 @@ import stat import subprocess import datetime import pkg_resources +import errno path = '/var/lib/cloud/data' @@ -17,16 +18,24 @@ if ci_version[0] <= 0 and ci_version[1] < 6: ' cloud-init\n') sys.exit(0) -os.chmod(path + '/cfn-userdata', stat.S_IXUSR | stat.S_IXGRP | stat.S_IXOTH) +os.chmod(os.path.join(path, 'cfn-userdata'), + stat.S_IXUSR | stat.S_IXGRP | stat.S_IXOTH) with open('/var/log/heat-provision.log', 'w') as log: log.write('Provision began: %s\n' % datetime.datetime.now()) log.flush() - p = subprocess.Popen(path + '/cfn-userdata', stdout=log, stderr=log) + p = subprocess.Popen(os.path.join(path, 'cfn-userdata'), + stdout=log, stderr=log) p.wait() log.write('Provision done: %s\n' % datetime.datetime.now()) if p.returncode: sys.exit(p.returncode) -with open(cloudinit.get_ipath_cur() + '/provision-finished', 'w') as log: +try: + os.makedirs('/var/lib/heat') +except OSError as e: + if e.errno != errno.EEXIST: + raise + +with open('/var/lib/heat/provision-finished', 'w') as log: log.write('%s\n' % datetime.datetime.now()) diff --git a/heat/tests/functional/util.py b/heat/tests/functional/util.py index f986f1ef73..43059ebae7 100644 --- a/heat/tests/functional/util.py +++ b/heat/tests/functional/util.py @@ -219,7 +219,7 @@ class Instance(object): tries = 0 while True: try: - self.sftp.stat('/var/lib/cloud/instance/provision-finished') + self.sftp.stat('/var/lib/heat/provision-finished') except paramiko.SSHException as e: print e except IOError as e: @@ -268,9 +268,6 @@ class Instance(object): t_data = t_data['UserData']['Fn::Base64']['Fn::Join'].pop() joined_t_data = ''.join(t_data) t_data_list = joined_t_data.split('\n') - # must match user data injection - t_data_list.insert(len(t_data_list) - 1, - u'touch /var/lib/cloud/instance/provision-finished') self.testcase.assertEqual(t_data_list, remote_file_list_u)