def handle_part(self, data, ctype, filename, payload, frequency): if ctype in handlers.CONTENT_SIGNALS: return # See: https://bugs.launchpad.net/bugs/819507 if frequency != PER_INSTANCE: return if not self.upstart_dir: return filename = util.clean_filename(filename) (_name, ext) = os.path.splitext(filename) if not ext: ext = '' ext = ext.lower() if ext != ".conf": filename = filename + ".conf" payload = util.dos2unix(payload) path = os.path.join(self.upstart_dir, filename) util.write_file(path, payload, 0o644) if SUITABLE_UPSTART: subp.subp(["initctl", "reload-configuration"], capture=False)
def handle_part(self, data, ctype, filename, payload, frequency): if ctype in handlers.CONTENT_SIGNALS: return # See: https://bugs.launchpad.net/bugs/819507 if frequency != PER_INSTANCE: return if not self.upstart_dir: return filename = util.clean_filename(filename) (_name, ext) = os.path.splitext(filename) if not ext: ext = '' ext = ext.lower() if ext != ".conf": filename = filename + ".conf" payload = util.dos2unix(payload) path = os.path.join(self.upstart_dir, filename) util.write_file(path, payload, 0o644) if SUITABLE_UPSTART: util.subp(["initctl", "reload-configuration"], capture=False)
def handle_cloud_boothook(self, _data, ctype, filename, payload, _frequency): if ctype == "__end__": return if ctype == "__begin__": return filename = filename.replace(os.sep, '_') payload = util.dos2unix(payload) prefix = "#cloud-boothook" start = 0 if payload.startswith(prefix): start = len(prefix) + 1 boothooks_dir = self.get_ipath("boothooks") filepath = "%s/%s" % (boothooks_dir, filename) util.write_file(filepath, payload[start:], 0700) try: env = os.environ.copy() env['INSTANCE_ID'] = self.datasource.get_instance_id() subprocess.check_call([filepath], env=env) except subprocess.CalledProcessError as e: log.error("boothooks script %s returned %i" % (filepath, e.returncode)) except Exception as e: log.error("boothooks unknown exception %s when running %s" % (e, filepath))
def _write_part(self, payload, filename): filename = util.clean_filename(filename) filepath = os.path.join(self.boothook_dir, filename) contents = util.strip_prefix_suffix(util.dos2unix(payload), prefix=self.prefixes[0]) util.write_file(filepath, contents.lstrip(), 0o700) return filepath
def handle_part(self, data, ctype, filename, payload, frequency): if ctype in handlers.CONTENT_SIGNALS: # TODO(harlowja): maybe delete existing things here return filename = util.clean_filename(filename) payload = util.dos2unix(payload) path = os.path.join(self.script_dir, filename) util.write_file(path, payload, 0o700)
def handle_part(self, data, ctype, filename, payload, frequency): if ctype in handlers.CONTENT_SIGNALS: # TODO(harlowja): maybe delete existing things here return filename = util.clean_filename(filename) payload = util.dos2unix(payload) path = os.path.join(self.script_dir, filename) util.write_file(path, payload, 0700)
def write_script_by_frequency(script_path, payload, frequency, scripts_dir): """Given a filename, a payload, a frequency, and a scripts folder, write the payload to the correct frequency-specific path""" filename = os.path.basename(script_path) filename = util.clean_filename(filename) folder = get_script_folder_by_frequency(frequency, scripts_dir) path = os.path.join(folder, filename) payload = util.dos2unix(payload) util.write_file(path, payload, 0o700)
def handle_user_script(self, _data, ctype, filename, payload, _frequency): if ctype == "__end__": return if ctype == "__begin__": # maybe delete existing things here return filename = filename.replace(os.sep, '_') scriptsdir = get_ipath_cur('scripts') util.write_file("%s/%s" % (scriptsdir, filename), util.dos2unix(payload), 0700)
def handle_upstart_job(self, _data, ctype, filename, payload, frequency): # upstart jobs are only written on the first boot if frequency != per_instance: return if ctype == "__end__" or ctype == "__begin__": return if not filename.endswith(".conf"): filename = filename + ".conf" util.write_file("%s/%s" % ("/etc/init", filename), util.dos2unix(payload), 0644)