Ryan Barry has uploaded a new change for review. Change subject: Don't overwrite the entirety of kdump.conf when we save ......................................................................
Don't overwrite the entirety of kdump.conf when we save Be smarter about writing kdump.conf -- only clear and set values which may be set by the TUI so we don't stomp on other people. Change-Id: Ic53bab0b3a5602ac71028db5835a69005ac85a0c Bug-Url: https://bugzilla.redhat.com/show_bug.cgi?id=1122923 Signed-off-by: Ryan Barry <[email protected]> --- M src/ovirt/node/config/defaults.py 1 file changed, 50 insertions(+), 20 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-node refs/changes/33/30933/1 diff --git a/src/ovirt/node/config/defaults.py b/src/ovirt/node/config/defaults.py index a2fd278..1346b33 100644 --- a/src/ovirt/node/config/defaults.py +++ b/src/ovirt/node/config/defaults.py @@ -1060,8 +1060,16 @@ def transaction(self): cfg = dict(self.retrieve()) - nfs, ssh, ssh_key, restore = (cfg["nfs"], cfg["ssh"], cfg["ssh_key"], - cfg["local"]) + nfs, ssh, ssh_key, local = (cfg["nfs"], cfg["ssh"], cfg["ssh_key"], + cfg["local"]) + + aug = AugeasWrapper() + prefix = "/files/etc/kdump.conf/" + + def _set_values(vals): + for k, v in vals.iteritems(): + aug.set(prefix + k, v) + aug.save() class BackupKdumpConfig(utils.Transaction.Element): title = "Backing up config files" @@ -1073,19 +1081,35 @@ def commit(self): self.backups.create(ignore_existing=True) - class RestoreKdumpConfig(utils.Transaction.Element): - title = "Restoring default kdump config" + class WipeKdumpConfig(utils.Transaction.Element): + title = "Removing set kdump options" def commit(self): - import ovirtnode.kdump as okdump - okdump.restore_kdump_config() + self.logger.debug("SET RUNNING") + paths = ["default", "ext4", "path", "nfs", "ssh", "net"] + + vals = aug.get_many(paths, basepath=prefix) + [aug.remove(v) for v in vals.keys() if vals[v] is not None] + aug.save() + + class LocalKdumpConfig(utils.Transaction.Element): + title = "Setting local kdump config" + + def commit(self): + vals = {"default": "reboot", + "ext4": "/dev/HostVG/Data", + "path": "/core"} + + _set_values(vals) class CreateNfsKdumpConfig(utils.Transaction.Element): title = "Creating kdump NFS config" def commit(self): - import ovirtnode.kdump as okdump - okdump.write_kdump_config(nfs, "nfs") + vals = {"default": "reboot", + "nfs": nfs} + + _set_values(vals) class PopulateSshKeys(utils.Transaction.Element): title = "Fetching and testing SSH keys" @@ -1127,10 +1151,10 @@ title = "Creating kdump SSH config" def commit(self): - import ovirtnode.kdump as okdump - from ovirtnode.ovirtfunctions import ovirt_store_config + vals = {"default": "reboot", + "ssh": ssh} - okdump.write_kdump_config(ssh, "ssh") + _set_values(vals) kdumpctl_cmd = system.which("kdumpctl") if kdumpctl_cmd: @@ -1141,10 +1165,13 @@ try: utils.process.check_call(cmd) - ovirt_store_config(["/root/.ssh/kdump_id_rsa.pub", - "/root/.ssh/kdump_id_rsa", - "/root/.ssh/known_hosts", - "/root/.ssh/config"]) + files = ["/root/.ssh/kdump_id_rsa.pub", + "/root/.ssh/kdump_id_rsa", + "/root/.ssh/known_hosts", + "/root/.ssh/config"] + + [utils.fs.Config().persist(file) for file in files] + except utils.process.CalledProcessError as e: self.logger.warning("Failed to activate KDump with " + "SSH: %s" % e) @@ -1157,9 +1184,7 @@ super(RemoveKdumpConfig, self).__init__() def commit(self): - from ovirtnode.ovirtfunctions import remove_config - - remove_config("/etc/kdump.conf") + utils.fs.Config().unpersist("/etc/kdump.conf") system.service("kdump", "stop") fs.File('/etc/kdump.conf').touch() @@ -1179,7 +1204,9 @@ try: system.service("kdump", "restart") except utils.process.CalledProcessError as e: + import shutil self.logger.info("Failure while restarting kdump: %s" % e) + shutil.copy2("/etc/kdump.conf", "/tmp/kdump.conf") unmount_config("/etc/kdump.conf") self.backups.restore("/etc/kdump.conf") system.service("kdump", "restart", do_raise=False) @@ -1196,6 +1223,9 @@ backup_txe = BackupKdumpConfig() tx.append(backup_txe) + wipe_txe = WipeKdumpConfig() + tx.append(wipe_txe) + final_txe = RestartKdumpService(backup_txe.backups) if nfs: tx.append(CreateNfsKdumpConfig()) @@ -1203,8 +1233,8 @@ if ssh_key: tx.append(PopulateSshKeys()) tx.append(CreateSshKdumpConfig()) - elif restore in [True, False]: - tx.append(RestoreKdumpConfig()) + elif local in [True, False]: + tx.append(LocalKdumpConfig()) else: final_txe = RemoveKdumpConfig(backup_txe.backups) -- To view, visit http://gerrit.ovirt.org/30933 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ic53bab0b3a5602ac71028db5835a69005ac85a0c Gerrit-PatchSet: 1 Gerrit-Project: ovirt-node Gerrit-Branch: master Gerrit-Owner: Ryan Barry <[email protected]> _______________________________________________ node-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/node-patches
