diff options
author | Chris St. Pierre <chris.a.st.pierre@gmail.com> | 2012-06-05 17:34:29 -0400 |
---|---|---|
committer | Chris St. Pierre <chris.a.st.pierre@gmail.com> | 2012-06-05 17:34:34 -0400 |
commit | 42e619c585de45e5e4e16ae3746efb7db9f90b1e (patch) | |
tree | dfdf1905a4bf586bba321d6ab562343cf1ebc28a /src/lib/Bcfg2/Client/Tools/__init__.py | |
parent | c6e7bfed9b6563b0c567997f063a8259ec548519 (diff) | |
download | bcfg2-42e619c585de45e5e4e16ae3746efb7db9f90b1e.tar.gz bcfg2-42e619c585de45e5e4e16ae3746efb7db9f90b1e.tar.bz2 bcfg2-42e619c585de45e5e4e16ae3746efb7db9f90b1e.zip |
re-rationalized service modes to make them more consistent and granular
Diffstat (limited to 'src/lib/Bcfg2/Client/Tools/__init__.py')
-rw-r--r-- | src/lib/Bcfg2/Client/Tools/__init__.py | 28 |
1 files changed, 21 insertions, 7 deletions
diff --git a/src/lib/Bcfg2/Client/Tools/__init__.py b/src/lib/Bcfg2/Client/Tools/__init__.py index c6cb6e239..e741b5e23 100644 --- a/src/lib/Bcfg2/Client/Tools/__init__.py +++ b/src/lib/Bcfg2/Client/Tools/__init__.py @@ -305,8 +305,7 @@ class SvcTool(Tool): return self.cmd.run(self.get_svc_command(service, restart_target))[0] def check_service(self, service): - # not supported for this driver - return 0 + return self.cmd.run(self.get_svc_command(service, 'status'))[0] == 0 def Remove(self, services): """ Dummy implementation of service removal method """ @@ -321,13 +320,12 @@ class SvcTool(Tool): return for entry in [ent for ent in bundle if self.handlesEntry(ent)]: - mode = entry.get('mode', 'default') - if (mode == 'manual' or - (mode == 'interactive_only' and + restart = entry.get("restart", "true") + if (restart.lower() == "false" or + (restart.lower == "interactive" and not self.setup['interactive'])): continue - # need to handle servicemode = (build|default) - # need to handle mode = (default|supervised) + rc = None if entry.get('status') == 'on': if self.setup['servicemode'] == 'build': @@ -351,3 +349,19 @@ class SvcTool(Tool): if rc: self.logger.error("Failed to manipulate service %s" % (entry.get('name'))) + + def Install(self, entries, states): + """Install all entries in sublist.""" + for entry in entries: + if entry.get('install', 'true').lower() == 'false': + self.logger.info("Service %s installation is false. Skipping " + "installation." % (entry.get('name'))) + continue + try: + func = getattr(self, "Install%s" % (entry.tag)) + states[entry] = func(entry) + if states[entry]: + self.modified.append(entry) + except: + self.logger.error("Unexpected failure of install method for entry type %s" + % (entry.tag), exc_info=1) |