#!/usr/bin/python import logging import os import sys from time import gmtime, strftime import imgcreate import appcreate import shutil import zipfile base_dir = os.path.dirname(__file__) appliances_dir = os.path.join(base_dir, 'appliances') cache_dir = os.path.join(base_dir, 'cache') last_file = os.path.join(appliances_dir, 'last') def main(): if not os.path.exists(appliances_dir): os.mkdir(appliances_dir) appliance_date = strftime("%Y%m%d", gmtime()) appliance_name = 'soas3-%s' % appliance_date if os.path.exists(os.path.join(appliances_dir, appliance_name + '.tar.gz')): print 'Appliance %s exists already' % appliance_name sys.exit(2) ks = imgcreate.read_kickstart(os.path.join(base_dir, 'soas-appliance.ks')) creator = appcreate.ApplianceImageCreator(ks, 'soas3-appliance', 'vmdk', 512, 1) try: creator.mount(cachedir=cache_dir) creator.install() creator.configure() creator.unmount() creator.package(appliances_dir, "none", "") except imgcreate.CreatorError, e: logging.error("Unable to create appliance : %s" % e) return 1 finally: creator.cleanup() os.chdir('./appliances') zip = zipfile.ZipFile('%s.zip' % appliance_name, 'w', zipfile.ZIP_DEFLATED) zip.write('soas3-appliance/soas3-appliance-sda.vmdk', '%s.vmdk' % appliance_name) zip.close() shutil.rmtree('soas3-appliance') return 0 if __name__ == "__main__": sys.exit(main())