From 9e31f1dd76c29d99fb5a16f0a2d6752cf5ead1c9 Mon Sep 17 00:00:00 2001 From: Narayan Desai Date: Mon, 24 Mar 2008 04:15:41 +0000 Subject: Rework bcfg2-admin pull - forward port Cfg and SSHbase support - reimplement admin mode - add verbose flag, and implement initial interactive mode, also force mode git-svn-id: https://svn.mcs.anl.gov/repos/bcfg/trunk/bcfg2@4446 ce84e21b-d406-0410-9b95-82705330c041 --- src/lib/Server/Plugins/SSHbase.py | 31 +++++++++++-------------------- 1 file changed, 11 insertions(+), 20 deletions(-) (limited to 'src/lib/Server/Plugins/SSHbase.py') diff --git a/src/lib/Server/Plugins/SSHbase.py b/src/lib/Server/Plugins/SSHbase.py index 4254ad6d9..89767cf85 100644 --- a/src/lib/Server/Plugins/SSHbase.py +++ b/src/lib/Server/Plugins/SSHbase.py @@ -1,15 +1,9 @@ '''This module manages ssh key files for bcfg2''' __revision__ = '$Revision$' -import binascii, difflib, os, socket, xml.sax.saxutils +import binascii, os, socket import Bcfg2.Server.Plugin -def update_file(path, diff): - '''Update file at path using diff''' - newdata = '\n'.join(difflib.restore(diff.split('\n'), 1)) - print "writing file, %s" % path - open(path, 'w').write(newdata) - class SSHbase(Bcfg2.Server.Plugin.Plugin, Bcfg2.Server.Plugin.DirectoryBacked): '''The sshbase generator manages ssh host keys (both v1 and v2) for hosts. It also manages the ssh_known_hosts file. It can @@ -190,17 +184,14 @@ class SSHbase(Bcfg2.Server.Plugin.Plugin, Bcfg2.Server.Plugin.DirectoryBacked): except OSError: self.logger.error("Failed to unlink temporary ssh keys") - def AcceptEntry(self, meta, _, entry_name, diff, fulldata, metadata_updates={}): - '''per-plugin bcfg2-admin pull support''' - filename = "%s/%s.H_%s" % (self.data, entry_name.split('/')[-1], - meta.hostname) - print "This file will be installed as file %s" % filename - if raw_input("Should it be installed? (N/y): ") in ['Y', 'y']: - print "writing file, %s" % filename - if fulldata: - newdata = fulldata - else: - newdata = '\n'.join(difflib.restore(diff.split('\n'), 1)) - open(filename, 'w').write(newdata) + def AcceptChoices(self, _, metadata): + return Bcfg2.Server.Plugin.Specificity(hostname=metadata.hostname) - + def AcceptPullData(self, specific, entry, log): + '''per-plugin bcfg2-admin pull support''' + # specific will always be host specific + filename = "%s/%s.H_%s" % (self.data, entry['name'].split('/')[-1], + specific.hostname) + open(filename, 'w').write(entry['text']) + if log: + print "Wrote file %s" % filename -- cgit v1.2.3-1-g7c22