Module: check_mk
Branch: master
Commit: 7f09bf350d936d7df16bbc87f9fc12feebbee6b0
URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=7f09bf350d936d…
Author: Lars Michelsen <lm(a)mathias-kettner.de>
Date: Tue May 16 16:11:06 2017 +0200
4719 FIX Folder host list: Improved performance for folders with a large number of hosts
Change-Id: I336ed1b5866be0625a060aac5524348e24feb8b0
---
.werks/4719 | 11 +++++++++++
web/htdocs/watolib.py | 9 +++++++++
2 files changed, 20 insertions(+)
diff --git a/.werks/4719 b/.werks/4719
new file mode 100644
index 0000000..93093f4
--- /dev/null
+++ b/.werks/4719
@@ -0,0 +1,11 @@
+Title: Folder host list: Improved performance for folders with a large number of hosts
+Level: 1
+Component: wato
+Class: fix
+Compatible: compat
+Edition: cre
+State: unknown
+Version: 1.5.0i1
+Date: 1494943834
+
+
diff --git a/web/htdocs/watolib.py b/web/htdocs/watolib.py
index 2038c4d..0060127 100644
--- a/web/htdocs/watolib.py
+++ b/web/htdocs/watolib.py
@@ -834,7 +834,9 @@ class CREFolder(BaseFolder):
self._name = name
self._parent = parent_folder
self._subfolders = {}
+
self._choices_for_moving_host = None
+ self._effective_attributes = None
self._root_dir = root_dir
if self._root_dir:
@@ -1230,6 +1232,8 @@ class CREFolder(BaseFolder):
def drop_caches(self):
self._choices_for_moving_host = None
+ self._effective_attributes = None
+
for subfolder in self._subfolders.values():
subfolder.drop_caches()
@@ -1435,6 +1439,9 @@ class CREFolder(BaseFolder):
def effective_attributes(self):
+ if self._effective_attributes != None:
+ return self._effective_attributes # cached :-)
+
effective = {}
for folder in self.parent_folder_chain():
effective.update(folder.attributes())
@@ -1446,6 +1453,8 @@ class CREFolder(BaseFolder):
if attrname not in effective:
effective.setdefault(attrname, host_attribute.default_value())
+ self._effective_attributes = effective
+
return effective