Beispiel #1
0
    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)
Beispiel #2
0
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
Beispiel #6
0
    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
Beispiel #7
0
 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)