from distutils.version import LooseVersion
import errno
-path = '/var/lib/cloud/data'
+path = '/var/lib/heat-cfntools'
def chk_ci_version():
if returncode:
return returncode
- try:
- os.makedirs('/var/lib/heat', 0700)
- except OSError as e:
- if e.errno != errno.EEXIST:
- raise
-
if __name__ == '__main__':
with create_log('/var/log/heat-provision.log') as log:
log.write('Provision failed')
sys.exit(returncode)
- with create_log('/var/lib/heat/provision-finished') as log:
+ userdata_path = os.path.join(path, 'provision-finished')
+ with create_log(userdata_path) as log:
log.write('%s\n' % datetime.datetime.now())
#part-handler
+import os
import datetime
def handle_part(data, ctype, filename, payload):
if ctype == "__begin__":
+ try:
+ os.makedirs('/var/lib/heat-cfntools', 0700)
+ except OSError as e:
+ if e.errno != errno.EEXIST:
+ raise
return
+
if ctype == "__end__":
return
log.write('%s filename:%s, ctype:%s\n' % (timestamp, filename, ctype))
if ctype == 'text/x-cfninitdata':
+ with open('/var/lib/heat-cfntools/%s' % filename, 'w') as f:
+ f.write(payload)
+
+ # TODO(sdake) hopefully temporary until users move to heat-cfntools-1.3
with open('/var/lib/cloud/data/%s' % filename, 'w') as f:
f.write(payload)
tries = 0
while True:
try:
- self.sftp.stat('/var/lib/cloud/instance/boot-finished')
+ self.sftp.stat('/var/lib/heat-cfntools/boot-finished')
except IOError, e:
tries += 1
if e.errno == errno.ENOENT:
tries = 0
while True:
try:
- self.sftp.stat('/var/lib/heat/provision-finished')
+ self.sftp.stat('/var/lib/heat-cfntools/provision-finished')
except paramiko.SSHException as e:
print e
except IOError as e:
stack = parser.Stack(None, 'test', template, params)
parsed_t = stack.resolve_static_data(t)
- remote_file = self.sftp.open('/var/lib/cloud/data/cfn-userdata')
+ remote_file = self.sftp.open('/var/lib/heat-cfntools/cfn-userdata')
remote_file_list = remote_file.read().split('\n')
remote_file_list_u = map(unicode, remote_file_list)
remote_file.close()
self.m.StubOutWithMock(pkg_resources, 'get_distribution')
self.m.StubOutWithMock(subprocess, 'Popen')
self.m.StubOutWithMock(os, 'chmod')
- self.m.StubOutWithMock(os, 'makedirs')
def tearDown(self):
self.m.UnsetStubs()
log = StringIO.StringIO()
pkg_resources.get_distribution('cloud-init').AndReturn(
FakeCiVersion('0.7.0'))
- os.chmod('/var/lib/cloud/data/cfn-userdata', 0700).AndReturn(None)
+
+ os.chmod('/var/lib/heat-cfntools/cfn-userdata', 0700).AndReturn(None)
subprocess.Popen(
- ['/var/lib/cloud/data/cfn-userdata'],
+ ['/var/lib/heat-cfntools/cfn-userdata'],
stderr=log,
stdout=log).AndReturn(FakePOpen(0))
- os.makedirs('/var/lib/heat', 0700).AndReturn(None)
-
self.m.ReplayAll()
loguserdata.main(log)
self.m.VerifyAll()
pkg_resources.get_distribution('cloud-init').AndReturn(
FakeCiVersion('0.7.0'))
- os.chmod('/var/lib/cloud/data/cfn-userdata', 0700).AndReturn(None)
+ os.chmod('/var/lib/heat-cfntools/cfn-userdata', 0700).AndReturn(None)
subprocess.Popen(
- ['/var/lib/cloud/data/cfn-userdata'],
+ ['/var/lib/heat-cfntools/cfn-userdata'],
stderr=log,
stdout=log).AndReturn(FakePOpen(-2))
- #fail on create directories
- pkg_resources.get_distribution('cloud-init').AndReturn(
- FakeCiVersion('0.7.0'))
-
- os.chmod('/var/lib/cloud/data/cfn-userdata', 0700).AndReturn(None)
- subprocess.Popen(
- ['/var/lib/cloud/data/cfn-userdata'],
- stderr=log,
- stdout=log).AndReturn(FakePOpen(0))
- os.makedirs('/var/lib/heat', 0700).AndRaise(OSError())
-
self.m.ReplayAll()
self.assertEqual(-1, loguserdata.main(log))
self.assertEqual(-2, loguserdata.main(log))
- self.assertRaises(OSError, loguserdata.main, log)
self.m.VerifyAll()