summaryrefslogtreecommitdiffstats
path: root/src/lib/Server/Plugins/SSHbase.py
diff options
context:
space:
mode:
authorNarayan Desai <desai@mcs.anl.gov>2008-03-24 04:15:41 +0000
committerNarayan Desai <desai@mcs.anl.gov>2008-03-24 04:15:41 +0000
commit9e31f1dd76c29d99fb5a16f0a2d6752cf5ead1c9 (patch)
tree4ed0e043ce262a649bf247db27a6fdf5f3bab4b9 /src/lib/Server/Plugins/SSHbase.py
parentd2a7c0a153e547ff327cfac29f10788f7926a06b (diff)
downloadbcfg2-9e31f1dd76c29d99fb5a16f0a2d6752cf5ead1c9.tar.gz
bcfg2-9e31f1dd76c29d99fb5a16f0a2d6752cf5ead1c9.tar.bz2
bcfg2-9e31f1dd76c29d99fb5a16f0a2d6752cf5ead1c9.zip
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
Diffstat (limited to 'src/lib/Server/Plugins/SSHbase.py')
-rw-r--r--src/lib/Server/Plugins/SSHbase.py31
1 files changed, 11 insertions, 20 deletions
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