summaryrefslogtreecommitdiffstats
path: root/src/lib/Client/Tools
diff options
context:
space:
mode:
authorJack Neely <jjneely@ncsu.edu>2011-03-03 15:41:10 -0500
committerJack Neely <jjneely@ncsu.edu>2011-03-03 15:41:10 -0500
commit821a6d5c9244af924146c2e7d4caa0939885a84f (patch)
tree14d5d99bc7a60492361bbf600604865e52d361a1 /src/lib/Client/Tools
parent81fce09fb9671c652703c37a5f9b48d020a34307 (diff)
parent73a4e8648c501437b3b1f4bd95e9c4023da9b681 (diff)
downloadbcfg2-821a6d5c9244af924146c2e7d4caa0939885a84f.tar.gz
bcfg2-821a6d5c9244af924146c2e7d4caa0939885a84f.tar.bz2
bcfg2-821a6d5c9244af924146c2e7d4caa0939885a84f.zip
Merge branch 'master' into yumng
Diffstat (limited to 'src/lib/Client/Tools')
-rw-r--r--src/lib/Client/Tools/APT.py2
-rw-r--r--src/lib/Client/Tools/POSIX.py36
-rw-r--r--src/lib/Client/Tools/SMF.py1
-rw-r--r--src/lib/Client/Tools/YUMng.py9
-rw-r--r--src/lib/Client/Tools/__init__.py6
5 files changed, 41 insertions, 13 deletions
diff --git a/src/lib/Client/Tools/APT.py b/src/lib/Client/Tools/APT.py
index 156186091..fe1ef6fdd 100644
--- a/src/lib/Client/Tools/APT.py
+++ b/src/lib/Client/Tools/APT.py
@@ -119,7 +119,7 @@ class APT(Bcfg2.Client.Tools.Tool):
if bad:
self.logger.debug("It is suggested that you either manage these "
"files, revert the changes, or ignore false "
- "failures):")
+ "failures:")
self.logger.info("Package %s failed validation. Bad files are:" % \
entry.get('name'))
self.logger.info(bad)
diff --git a/src/lib/Client/Tools/POSIX.py b/src/lib/Client/Tools/POSIX.py
index d2611130c..c883fc17a 100644
--- a/src/lib/Client/Tools/POSIX.py
+++ b/src/lib/Client/Tools/POSIX.py
@@ -671,12 +671,36 @@ class POSIX(Bcfg2.Client.Tools.Tool):
def Installnonexistent(self, entry):
'''Remove nonexistent entries'''
- try:
- os.remove(entry.get('name'))
- return True
- except OSError:
- self.logger.error('Failed to remove %s' % entry.get('name'))
- return False
+ ename = entry.get('name')
+ if entry.get('recursive') in ['True', 'true']:
+ # ensure that configuration spec is consistent first
+ if [e for e in self.buildModlist() \
+ if e.startswith(ename) and e != ename]:
+ self.logger.error('Not installing %s. One or more files '
+ 'in this directory are specified in '
+ 'your configuration.' % ename)
+ return False
+ try:
+ shutil.rmtree(ename)
+ except OSError, e:
+ self.logger.error('Failed to remove %s: %s' % (ename,
+ e.strerror))
+ else:
+ if os.path.isdir(ename):
+ try:
+ os.rmdir(ename)
+ return True
+ except OSError, e:
+ self.logger.error('Failed to remove %s: %s' % (ename,
+ e.strerror))
+ return False
+ try:
+ os.remove(ename)
+ return True
+ except OSError, e:
+ self.logger.error('Failed to remove %s: %s' % (ename,
+ e.strerror))
+ return False
def Verifypermissions(self, entry, _):
"""Verify Path type='permissions' entry"""
diff --git a/src/lib/Client/Tools/SMF.py b/src/lib/Client/Tools/SMF.py
index f0bc6bd05..96c7d9d28 100644
--- a/src/lib/Client/Tools/SMF.py
+++ b/src/lib/Client/Tools/SMF.py
@@ -66,6 +66,7 @@ class SMF(Bcfg2.Client.Tools.SvcTool):
# Occurs when no lines are returned (service not installed)
return False
+ entry.set('current_status', srvdata[0])
if entry.get('status') == 'on':
return srvdata[0] == 'ON'
else:
diff --git a/src/lib/Client/Tools/YUMng.py b/src/lib/Client/Tools/YUMng.py
index 3b5a62d97..8db1683e4 100644
--- a/src/lib/Client/Tools/YUMng.py
+++ b/src/lib/Client/Tools/YUMng.py
@@ -358,7 +358,12 @@ class YUMng(Bcfg2.Client.Tools.PkgTool):
for po in packages:
d = {}
for i in ['name', 'epoch', 'version', 'release', 'arch']:
- d[i] = getattr(po, i)
+ if i == 'arch' and getattr(po, i) is None:
+ d[i] = 'noarch'
+ elif i == 'epoch' and getattr(po, i) is None:
+ d[i] = '0'
+ else:
+ d[i] = getattr(po, i)
self.installed.setdefault(po.name, []).append(d)
def VerifyPackage(self, entry, modlist, pinned_version=None):
@@ -530,7 +535,7 @@ class YUMng(Bcfg2.Client.Tools.PkgTool):
package_fail = True
self.logger.debug("It is suggested that you either manage "
"these files, revert the changes, or ignore "
- "false failures):")
+ "false failures:")
self.logger.debug(" Verify Problems:")
for fn, probs in stat['verify'].items():
self.logger.debug(" %s" % fn)
diff --git a/src/lib/Client/Tools/__init__.py b/src/lib/Client/Tools/__init__.py
index 8a90e130c..b5120db71 100644
--- a/src/lib/Client/Tools/__init__.py
+++ b/src/lib/Client/Tools/__init__.py
@@ -335,9 +335,7 @@ class SvcTool(Tool):
def restart_service(self, service):
self.logger.debug('Restarting service %s' % service.get('name'))
- restart_target = 'restart'
- if service.get('mode', 'default') == 'custom':
- restart_target = service.get('target', 'restart')
+ restart_target = service.get('target', 'restart')
return self.cmd.run(self.get_svc_command(service, restart_target))[0]
def check_service(self, service):
@@ -353,7 +351,7 @@ class SvcTool(Tool):
if entry.get('mode', 'default') == 'manual':
continue
# need to handle servicemode = (build|default)
- # need to handle mode = (default|supervised|custom)
+ # need to handle mode = (default|supervised)
if entry.get('status') == 'on':
if self.setup['servicemode'] == 'build':
rc = self.stop_service(entry)