Module: check_mk
Branch: master
Commit: c26b58f473254d56b532c4f2bd0c6d2c9af5dd61
URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=c26b58f473254d…
Author: Lars Michelsen <lm(a)mathias-kettner.de>
Date: Sun Aug 12 22:21:41 2018 +0200
Cleaned up site context checks
Change-Id: I70f98ae5934a83b45e5073ef2efacdd443dac596
---
omd/packages/omd/omdlib/main.py | 30 ++++++++++++++++++++++++------
tests/unit/omdlib/test_site_context.py | 2 ++
2 files changed, 26 insertions(+), 6 deletions(-)
diff --git a/omd/packages/omd/omdlib/main.py b/omd/packages/omd/omdlib/main.py
index f3ccffe..ad4278a 100644
--- a/omd/packages/omd/omdlib/main.py
+++ b/omd/packages/omd/omdlib/main.py
@@ -2335,7 +2335,7 @@ def call_scripts(phase):
def check_site_user(site, site_must_exist):
- if isinstance(site, RootContext):
+ if not site.is_site_context():
return
if not site_must_exist:
@@ -3170,7 +3170,7 @@ def main_umount(args, options=None):
# if no site is selected, all sites are affected
exit_status = 0
- if not g_site.name:
+ if not g_site.is_site_context():
for site_id in all_sites():
# Set global vars for the current site
g_site = SiteContext(site_id)
@@ -3200,7 +3200,7 @@ def main_init_action(command, args, options=None):
if options is None:
options = {}
- if g_site.name:
+ if g_site.is_site_context():
exit_status = init_action(command, args, options)
# When the whole site is about to be stopped check for remaining
@@ -4035,6 +4035,12 @@ class AbstractSiteContext(object):
raise NotImplementedError()
+ @staticmethod
+ @abc.abstractmethod
+ def is_site_context():
+ raise NotImplementedError()
+
+
class SiteContext(AbstractSiteContext):
@property
@@ -4130,6 +4136,12 @@ class SiteContext(AbstractSiteContext):
return not os.path.exists(apache_conf)
+ @staticmethod
+ def is_site_context():
+ return True
+
+
+
class RootContext(AbstractSiteContext):
def __init__(self):
@@ -4162,6 +4174,12 @@ class RootContext(AbstractSiteContext):
return False
+ @staticmethod
+ def is_site_context():
+ return False
+
+
+
class VersionInfo(object):
"""Provides OMD version/platform specific infos"""
def __init__(self, version):
@@ -4637,7 +4655,7 @@ def main():
# Commands operating on an existing site *must* run omd in
# the same version as the site has! Sole exception: update.
# That command must be run in the target version
- if g_site.name and site_must_exist and command != "update":
+ if g_site.is_site_context() and site_must_exist and command != "update":
v = g_site.version
if v == None: # Site has no home directory or version link
if command == "rm":
@@ -4665,11 +4683,11 @@ def main():
else:
raise
- if not no_suid and g_site.name and is_root() and not only_root:
+ if not no_suid and g_site.is_site_context() and is_root() and not only_root:
switch_to_site_user()
# Make sure environment is in a defined state
- if g_site.name:
+ if g_site.is_site_context():
clear_environment()
set_environment()
diff --git a/tests/unit/omdlib/test_site_context.py
b/tests/unit/omdlib/test_site_context.py
index 0fa6658..da2852e 100644
--- a/tests/unit/omdlib/test_site_context.py
+++ b/tests/unit/omdlib/test_site_context.py
@@ -7,6 +7,7 @@ def test_root_context():
site = omdlib.main.RootContext()
assert site.name == None
assert site.dir == "/"
+ assert not site.is_site_context()
def test_site_context(monkeypatch):
@@ -14,6 +15,7 @@ def test_site_context(monkeypatch):
assert site.name == "dingeling"
assert site.dir == "/omd/sites/dingeling"
assert site.tmp_dir == "/omd/sites/dingeling/tmp"
+ assert site.is_site_context()
def test_site_context_version(monkeypatch):