You are viewing a plain text version of this content. The canonical link for it is here.
Posted to tashi-commits@incubator.apache.org by rg...@apache.org on 2013/03/11 13:40:25 UTC

svn commit: r1455136 - in /incubator/tashi/trunk: etc/TashiDefaults.cfg src/tashi/clustermanager/data/getentoverride.py

Author: rgass
Date: Mon Mar 11 13:40:25 2013
New Revision: 1455136

URL: http://svn.apache.org/r1455136
Log:
In Telef\'{o}nica we have a very slow ldap server which takes 5 seconds to
respond.  Even with the configurable caching, addingg an option to pull the
administrative database from a local file if specifed.


Modified:
    incubator/tashi/trunk/etc/TashiDefaults.cfg
    incubator/tashi/trunk/src/tashi/clustermanager/data/getentoverride.py

Modified: incubator/tashi/trunk/etc/TashiDefaults.cfg
URL: http://svn.apache.org/viewvc/incubator/tashi/trunk/etc/TashiDefaults.cfg?rev=1455136&r1=1455135&r2=1455136&view=diff
==============================================================================
--- incubator/tashi/trunk/etc/TashiDefaults.cfg (original)
+++ incubator/tashi/trunk/etc/TashiDefaults.cfg Mon Mar 11 13:40:25 2013
@@ -62,6 +62,10 @@ allowDuplicateNames = False
 [GetentOverride]
 baseData = tashi.clustermanager.data.Pickled
 fetchThreshold = 60.0
+#  Use local version of getent file
+;getentFromLocalFile = False
+;getentLocalFile = /var/tmp/getent.tmp
+
 
 [LdapOverride]
 baseData = tashi.clustermanager.data.Pickled

Modified: incubator/tashi/trunk/src/tashi/clustermanager/data/getentoverride.py
URL: http://svn.apache.org/viewvc/incubator/tashi/trunk/src/tashi/clustermanager/data/getentoverride.py?rev=1455136&r1=1455135&r2=1455136&view=diff
==============================================================================
--- incubator/tashi/trunk/src/tashi/clustermanager/data/getentoverride.py (original)
+++ incubator/tashi/trunk/src/tashi/clustermanager/data/getentoverride.py Mon Mar 11 13:40:25 2013
@@ -29,6 +29,8 @@ class GetentOverride(DataInterface):
 		self.log = logging.getLogger(__name__)
 		self.baseDataObject = instantiateImplementation(config.get("GetentOverride", "baseData"), config)
 		self.dfs = instantiateImplementation(config.get("ClusterManager", "dfs"), config)
+		self.useLocal = config.get("GetentOverride", "getentFromLocalFile")
+		self.localFileName = config.get("GetentOverride", "getentLocalFile")
 
 		self.users = {}
 		self.lastUserUpdate = 0.0
@@ -105,7 +107,18 @@ class GetentOverride(DataInterface):
 		now = time.time()
 		if (now - self.lastUserUpdate > self.fetchThreshold):
 			myUsers = {}
-			p = subprocess.Popen("getent passwd".split(), stdout=subprocess.PIPE)
+            #  Use local getent file instead of querying the administrative db
+			if self.useLocal:
+				if os.path.exists(self.localFileName):
+					cmd = "cat %s" % self.localFileName
+					p = subprocess.Popen(cmd.split(), stdout=subprocess.PIPE)
+				else:
+					self.log.warning("getent cache file not found (%s)" % (self.localFileName))
+					p = subprocess.Popen("getent passwd".split(), stdout=subprocess.PIPE)
+            #  Query administrative database
+			else:
+				p = subprocess.Popen("getent passwd".split(), stdout=subprocess.PIPE)
+
 			try:
 				for l in p.stdout.xreadlines():
 					ws = l.strip().split(":")