def commit(self): aug = AugeasWrapper() localhost_entry = None for entry in aug.match("/files/etc/hosts/*"): if aug.get(entry + "/ipaddr") == "127.0.0.1": localhost_entry = entry break if not localhost_entry: raise RuntimeError("Couldn't find entry for localhost") # Remove all aliases for alias_entry in aug.match(localhost_entry + "/alias"): aug.remove(alias_entry, False) # ... and create a new one aliases = ["localhost", "localhost.localdomain"] if self.hostname: aliases.append(self.hostname) for _idx, alias in enumerate(aliases): idx = _idx + 1 p = "%s/alias[%s]" % (localhost_entry, idx) aug.set(p, alias, False) config.network.hostname(self.hostname) fs.Config().persist("/etc/hosts") fs.Config().persist("/etc/hostname") fs.Config().persist("/etc/sysconfig/network") utils.network.reset_resolver()
def _aug_get_or_set(augpath, new_servers=None): """Get or set some servers """ aug = Augeas() aug.save() aug.force_reload() servers = [] for path in aug.match(augpath): servers.append(aug.get(path)) LOGGER.debug("Current servers: %s" % servers) if new_servers is not None: itempath = lambda idx: "%s[%d]" % (augpath, idx + 1) LOGGER.debug("Removing old servers: %s" % servers) for idx, server in enumerate(servers): LOGGER.debug("Removing server %s: %s" % (itempath(idx), server)) aug.remove(itempath(idx)) LOGGER.debug("Setting new servers: %s" % new_servers) for idx, server in enumerate(new_servers): LOGGER.debug("Setting server %s: %s" % (itempath(idx), server)) aug.set(itempath(idx), server) return servers
def _aug_get_or_set(augpath, new_servers=None): """Get or set some servers """ aug = Augeas() servers = [] for path in aug.match(augpath): servers.append(aug.get(path)) if new_servers: itempath = lambda idx: "%s[%d]" % (augpath, idx + 1) for idx, server in enumerate(new_servers): LOGGER.debug("Setting server: %s" % server) aug.set(itempath(idx), server) if len(servers) > len(new_servers): LOGGER.debug("Less servers than before, removing old ones") for idx in range(len(servers) + 1, len(new_servers)): aug.remove(itempath(idx)) return servers