def handle_cloud_config(self, ctype, filename, payload): if ctype == "__begin__": self.cloud_config_str = "" return if ctype == "__end__": cloud_config = self.get_ipath("cloud_config") util.write_file(cloud_config, self.cloud_config_str, 0600) return self.cloud_config_str += "\n#%s\n%s" % (filename, payload)
def run_per_instance(name, func, args, clear_on_fail=False): semfile = "%s/%s" % (get_ipath_cur("data"), name) if os.path.exists(semfile): return util.write_file(semfile, str(time.time())) try: func(*args) except: if clear_on_fail: os.unlink(semfile) raise
def handle(_name, cfg, cloud, log, _args): if util.get_cfg_option_bool(cfg, "preserve_hostname", False): log.debug("Option 'preserve_hostname' is set. Not setting hostname.") return True (hostname, _fqdn) = util.get_hostname_fqdn(cfg, cloud) try: old_name = set_hostname(hostname, log) if old_name: prev_fn = "%s/%s" % (cloud.get_cpath('data'), "previous-hostname") util.write_file(prev_fn, "%s\n" % (old_name), 0644) except Exception: util.logexc(log) log.warn("Failed to set hostname to %s", hostname) return True
def set_hostname_deb(hostname, log): def read_hostname(filename, default=None): with open(filename, "r") as fp: lines = fp.readlines() for line in lines: hpos = line.find("#") if hpos != -1: line = line[0:hpos] line = line.rstrip() if line: return line return default old_hostname = read_hostname('/etc/hostname') util.write_file("/etc/hostname", "%s\n" % hostname, 0644) return old_hostname
def set_hostname_rh(hostname, log): lines = [] with open('/etc/sysconfig/network', 'r') as fh: lines = fh.read().splitlines() adjusted_lines = [] old_hostname = None for line in lines: mtch = re.match(r"^\s*HOSTNAME\s*=\s*(.*)$", line, re.I) if mtch: old_hostname = mtch.group(1) log.info("Removing old hostname entry - %s", line) else: adjusted_lines.append(line) adjusted_lines.append("HOSTNAME=%s" % (hostname)) contents = "%s\n" % os.linesep.join(adjusted_lines) util.write_file('/etc/sysconfig/network', contents, 0644) return old_hostname
def set_cur_instance(self): try: os.unlink(cur_instance_link) except OSError as e: if e.errno != errno.ENOENT: raise iid = self.get_instance_id() os.symlink("./instances/%s" % iid, cur_instance_link) idir = self.get_ipath() dlist = [] for d in ["handlers", "scripts", "sem"]: dlist.append("%s/%s" % (idir, d)) util.ensure_dirs(dlist) ds = "%s: %s\n" % (self.datasource.__class__, str(self.datasource)) dp = self.get_cpath('data') util.write_file("%s/%s" % (idir, 'datasource'), ds) util.write_file("%s/%s" % (dp, 'previous-datasource'), ds) util.write_file("%s/%s" % (dp, 'previous-instance-id'), "%s\n" % iid) return iid
def store_userdata(self): util.write_file(self.get_ipath('userdata_raw'), self.datasource.get_userdata_raw(), 0600) util.write_file(self.get_ipath('userdata'), self.datasource.get_userdata(), 0600)