From cd7b0b3d40a5a340d5b47819f94a21c9faf23120 Mon Sep 17 00:00:00 2001 From: "Chris St. Pierre" Date: Wed, 5 Sep 2012 14:36:15 -0400 Subject: added server-side client metadata object caching --- src/lib/Bcfg2/Server/Plugins/Probes.py | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) (limited to 'src/lib/Bcfg2/Server/Plugins/Probes.py') diff --git a/src/lib/Bcfg2/Server/Plugins/Probes.py b/src/lib/Bcfg2/Server/Plugins/Probes.py index 7f300ebe0..056521ce7 100644 --- a/src/lib/Bcfg2/Server/Plugins/Probes.py +++ b/src/lib/Bcfg2/Server/Plugins/Probes.py @@ -2,10 +2,12 @@ import re import os import sys import time +import copy import operator import lxml.etree import Bcfg2.Server import Bcfg2.Server.Plugin +from Bcfg2.Compat import any try: from django.db import models @@ -35,8 +37,6 @@ except ImportError: except ImportError: has_yaml = False -import Bcfg2.Server.Plugin - if has_django: class ProbesDataModel(models.Model, Bcfg2.Server.Plugin.PluginDatabaseModel): @@ -266,10 +266,22 @@ class Probes(Bcfg2.Server.Plugin.Probing, return self.probes.get_probe_data(meta) def ReceiveData(self, client, datalist): + if self.core.metadata_cache_mode in ['cautious', 'aggressive']: + if client.hostname in self.probedata: + olddata = copy.copy(self.probedata[client.hostname]) + else: + olddata = ClientProbeDataSet() + self.cgroups[client.hostname] = [] self.probedata[client.hostname] = ClientProbeDataSet() for data in datalist: self.ReceiveDataItem(client, data) + + if (self.core.metadata_cache_mode in ['cautious', 'aggressive'] and + (olddata.keys() != self.probedata[client.hostname].keys() or + any(olddata[p] != self.probedata[client.hostname][p] + for p in olddata.keys()))): + self.core.metadata_cache.expire(client.hostname) self.write_data(client) def ReceiveDataItem(self, client, data): -- cgit v1.2.3-1-g7c22