From c7f3c746ccfd74480064dbe73fbc754548c30927 Mon Sep 17 00:00:00 2001 From: Rob Crittenden Date: Mon, 14 Jan 2008 12:43:26 -0500 Subject: Backup system state in ipa-server-install This patch adds a sysrestore module which allows ipa-server-install code to backup any system state so that it can be restored again with e.g. ipa-server-install --uninstall. The idea is that any files ipa-server-install modifies gets backed up to /var/cache/ipa/sysrestore/ while any "meta" state, like whether a service is enabled with chkconfig, is saved to /var/cache/ipa/sysrestore.state. Signed-off-by: Mark McLoughlin --- ipa-server/ipaserver/dsinstance.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) (limited to 'ipa-server/ipaserver/dsinstance.py') diff --git a/ipa-server/ipaserver/dsinstance.py b/ipa-server/ipaserver/dsinstance.py index 0de891fc6..78a847597 100644 --- a/ipa-server/ipaserver/dsinstance.py +++ b/ipa-server/ipaserver/dsinstance.py @@ -154,10 +154,14 @@ class DsInstance(service.Service): self.step("initializing group membership", self.__init_memberof) - self.step("configuring directory to start on boot", self.chkconfig_on) + self.step("configuring directory to start on boot", self.__enable) self.start_creation("Configuring directory server:") + def __enable(self): + self.backup_state("enabled", self.is_enabled()) + self.chkconfig_on() + def __setup_sub_dict(self): server_root = find_server_root() self.sub_dict = dict(FQHN=self.host_name, SERVERID=self.serverid, @@ -166,10 +170,12 @@ class DsInstance(service.Service): SERVER_ROOT=server_root, DOMAIN=self.domain) def __create_ds_user(self): + user_exists = True try: pwd.getpwnam(self.ds_user) logging.debug("ds user %s exists" % self.ds_user) except KeyError: + user_exists = False logging.debug("adding ds user %s" % self.ds_user) args = ["/usr/sbin/useradd", "-c", "DS System User", "-d", "/var/lib/dirsrv", "-M", "-r", "-s", "/sbin/nologin", self.ds_user] try: @@ -178,7 +184,12 @@ class DsInstance(service.Service): except ipautil.CalledProcessError, e: logging.critical("failed to add user %s" % e) + self.backup_state("user", self.ds_user) + self.backup_state("user_exists", user_exists) + def __create_instance(self): + self.backup_state("running", self.is_running()) + self.backup_state("serverid", self.serverid) inf_txt = ipautil.template_str(INF_TEMPLATE, self.sub_dict) logging.debug(inf_txt) inf_fd = ipautil.write_tmp_file(inf_txt) -- cgit