summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNarayan Desai <desai@mcs.anl.gov>2006-02-16 20:13:37 +0000
committerNarayan Desai <desai@mcs.anl.gov>2006-02-16 20:13:37 +0000
commit70774611673c44061395f288fec349f31436bfaa (patch)
tree7358c69fa96ee65bc8fe483241322b28c5a5d004
parent25cbe5f6b72a089e36ded5dcb4286c5c4ed228d4 (diff)
downloadbcfg2-70774611673c44061395f288fec349f31436bfaa.tar.gz
bcfg2-70774611673c44061395f288fec349f31436bfaa.tar.bz2
bcfg2-70774611673c44061395f288fec349f31436bfaa.zip
Fix sshbase tb
Set stdin to /dev/null for debian toolset git-svn-id: https://svn.mcs.anl.gov/repos/bcfg/trunk/bcfg2@1742 ce84e21b-d406-0410-9b95-82705330c041
-rw-r--r--src/lib/Client/Debian.py27
-rw-r--r--src/lib/Server/Plugins/SSHbase.py3
2 files changed, 14 insertions, 16 deletions
diff --git a/src/lib/Client/Debian.py b/src/lib/Client/Debian.py
index 3c9a72c5a..a78027cf0 100644
--- a/src/lib/Client/Debian.py
+++ b/src/lib/Client/Debian.py
@@ -1,15 +1,9 @@
'''This is the bcfg2 support for debian'''
__revision__ = '$Revision$'
-from glob import glob
-from os import environ, stat
-from re import compile as regcompile
+import apt_pkg, glob, os, re, sys, Bcfg2.Client.Toolset
-import apt_pkg
-
-from Bcfg2.Client.Toolset import Toolset
-
-class ToolsetImpl(Toolset):
+class ToolsetImpl(Bcfg2.Client.Toolset.Toolset):
'''The Debian toolset implements package and service operations and inherits
the rest from Toolset.Toolset'''
__name__ = 'Debian'
@@ -18,13 +12,16 @@ class ToolsetImpl(Toolset):
'/etc/apt/apt.conf']
pkgtool = {'deb':('DEBIAN_FRONTEND=noninteractive apt-get --reinstall -q=2 --force-yes -y install %s',
('%s=%s', ['name', 'version']))}
- svcre = regcompile("/etc/.*/[SK]\d\d(?P<name>\S+)")
+ svcre = re.compile("/etc/.*/[SK]\d\d(?P<name>\S+)")
def __init__(self, cfg, setup):
- Toolset.__init__(self, cfg, setup)
+ Bcfg2.Client.Toolset.Toolset.__init__(self, cfg, setup)
self.cfg = cfg
self.CondPrint('debug', 'Configuring Debian toolset')
- environ["DEBIAN_FRONTEND"] = 'noninteractive'
+ os.environ["DEBIAN_FRONTEND"] = 'noninteractive'
+ # dup /dev/null on top of stdin
+ null = open('/dev/null', 'w+')
+ os.dup2(null.fileno(), sys.__stdin__.fileno())
self.saferun("dpkg --force-confold --configure -a")
if not self.setup['build']:
self.saferun("/usr/sbin/dpkg-reconfigure -f noninteractive debconf < /dev/null")
@@ -49,7 +46,7 @@ class ToolsetImpl(Toolset):
# implement entry (Verify|Install) ops
def VerifyService(self, entry):
'''Verify Service status for entry'''
- rawfiles = glob("/etc/rc*.d/*%s" % (entry.get('name')))
+ rawfiles = glob.glob("/etc/rc*.d/*%s" % (entry.get('name')))
files = [filename for filename in rawfiles if self.svcre.match(filename).group('name') == entry.get('name')]
if entry.get('status') == 'off':
if files:
@@ -67,7 +64,7 @@ class ToolsetImpl(Toolset):
cmdrc = 1
self.CondPrint('verbose', "Installing Service %s" % (entry.get('name')))
try:
- stat('/etc/init.d/%s' % entry.get('name'))
+ os.stat('/etc/init.d/%s' % entry.get('name'))
except OSError:
self.CondPrint('debug', "Init script for service %s does not exist" % entry.get('name'))
return False
@@ -104,10 +101,10 @@ class ToolsetImpl(Toolset):
def Inventory(self):
'''Do standard inventory plus debian extra service check'''
- Toolset.Inventory(self)
+ Bcfg2.Client.Toolset.Toolset.Inventory(self)
allsrv = []
[allsrv.append(self.svcre.match(fname).group('name')) for fname in
- glob("/etc/rc[12345].d/S*") if self.svcre.match(fname).group('name') not in allsrv]
+ glob.glob("/etc/rc[12345].d/S*") if self.svcre.match(fname).group('name') not in allsrv]
self.CondDisplayList('debug', "Found active services:", allsrv)
csrv = self.cfg.findall(".//Service")
[allsrv.remove(svc.get('name')) for svc in csrv if
diff --git a/src/lib/Server/Plugins/SSHbase.py b/src/lib/Server/Plugins/SSHbase.py
index 87e9225af..da7623cd3 100644
--- a/src/lib/Server/Plugins/SSHbase.py
+++ b/src/lib/Server/Plugins/SSHbase.py
@@ -95,7 +95,8 @@ class SSHbase(Bcfg2.Server.Plugin.Plugin):
if not hasattr(self, 'static_skn'):
self.cache_skn()
entry.text = self.static_skn
- for hostkey in [keytmpl % client for keytmpl in self.pubkeys]:
+ for hostkey in [keytmpl % client for keytmpl in self.pubkeys \
+ if self.repository.entries.has_key(keytmpl % client)]:
entry.text += "localhost,localhost.localdomain,127.0.0.1 %s" % (
self.repository.entries[hostkey].data)
permdata = {'owner':'root', 'group':'root', 'perms':'0644'}