activate cache_utils only when enabled.
authorBaris Metin <bmetin@verivue.com>
Mon, 11 Apr 2011 21:59:40 +0000 (17:59 -0400)
committerBaris Metin <bmetin@verivue.com>
Mon, 11 Apr 2011 21:59:40 +0000 (17:59 -0400)
PLC/API.py
PLC/Methods/GetSlivers.py

index 308fa11..359e955 100644 (file)
@@ -7,6 +7,7 @@
 # Copyright (C) 2004-2006 The Trustees of Princeton University
 #
 
+import os
 import sys
 import traceback
 import string
@@ -153,6 +154,27 @@ class PLCAPI:
             apply_ratelimit_aspect()
 
 
+        # Enable Caching. Only for GetSlivers for the moment.
+        # TODO: we may consider to do this in an aspect like the ones above.
+        try:
+            if self.config.PLC_GETSLIVERS_CACHE:
+                getslivers_cache = true
+        except AttributeError:
+            getslivers_cache = false
+
+        if getslivers_cache:
+            os.environ['DJANGO_SETTINGS_MODULE']='plc_django_settings'
+            from cache_utils.decorators import cached
+            from PLC.Methods.GetSlivers import GetSlivers
+
+            @cached(7200)
+            def cacheable_call(cls, auth, node_id_or_hostname):
+                return cls.raw_call(auth, node_id_or_hostname)
+            
+            GetSlivers.call = cacheable_call
+            
+
+
     def callable(self, method):
         """
         Return a new instance of the specified method.
index 6825909..18b5fbf 100644 (file)
@@ -22,11 +22,6 @@ from PLC.Methods.GetSliceFamily import GetSliceFamily
 
 from PLC.Accessors.Accessors_standard import *
 
-# Caching
-import os
-os.environ['DJANGO_SETTINGS_MODULE']='plc_django_settings'
-from cache_utils.decorators import cached
-
 # XXX used to check if slice expiration time is sane
 MAXINT =  2L**31-1
 
@@ -210,20 +205,9 @@ class GetSlivers(Method):
     }
 
     def call(self, auth, node_id_or_hostname = None):
-        try:
-            cache_opt = self.api.config.PLC_GETSLIVERS_CACHE
-        except AttributeError:
-            cache_opt = False
-
-        if (cache_opt):
-            return self.cacheable_call(auth, node_id_or_hostname)
-        else:
-            return self.raw_call(auth, node_id_or_hostname)
-
-    @cached(7200)
-    def cacheable_call(self, auth, node_id_or_hostname):
         return self.raw_call(auth, node_id_or_hostname)
 
+
     def raw_call(self, auth, node_id_or_hostname):
         timestamp = int(time.time())