server/repository.py
branchstable
changeset 7134 01544b6d98fa
parent 7085 36e91d19188b
child 7237 9f619715665b
--- a/server/repository.py	Tue Mar 29 09:02:49 2011 +0200
+++ b/server/repository.py	Tue Mar 29 08:47:09 2011 +0200
@@ -59,6 +59,7 @@
      security_enabled
 from cubicweb.server.ssplanner import EditedEntity
 
+
 def prefill_entity_caches(entity, relations):
     session = entity._cw
     # prefill entity relation caches
@@ -134,6 +135,7 @@
             vreg = cwvreg.CubicWebVRegistry(config)
         self.vreg = vreg
         self.pyro_registered = False
+        self.pyro_uri = None
         self.info('starting repository from %s', self.config.apphome)
         # dictionary of opened sessions
         self._sessions = {}
@@ -415,7 +417,9 @@
                 self.exception('error while closing %s' % pool)
                 continue
         if self.pyro_registered:
-            pyro_unregister(self.config)
+            if self._use_pyrons():
+                pyro_unregister(self.config)
+            self.pyro_uri = None
         hits, misses = self.querier.cache_hit, self.querier.cache_miss
         try:
             self.info('rql st cache hit/miss: %s/%s (%s%% hits)', hits, misses,
@@ -1419,20 +1423,32 @@
         config['pyro-instance-id'] = appid
         return appid
 
+    def _use_pyrons(self):
+        """return True if the pyro-ns-host is set to something else
+        than NO_PYRONS, meaning we want to go through a pyro
+        nameserver"""
+        return self.config['pyro-ns-host'] != 'NO_PYRONS'
+
     def pyro_register(self, host=''):
         """register the repository as a pyro object"""
         from logilab.common import pyro_ext as pyro
         daemon = pyro.register_object(self, self.pyro_appid,
                                       daemonhost=self.config['pyro-host'],
-                                      nshost=self.config['pyro-ns-host'])
+                                      nshost=self.config['pyro-ns-host'],
+                                      use_pyrons=self._use_pyrons())
         self.info('repository registered as a pyro object %s', self.pyro_appid)
+        self.pyro_uri =  pyro.get_object_uri(self.pyro_appid)
+        self.info('pyro uri is: %s', self.pyro_uri)
         self.pyro_registered = True
         # register a looping task to regularly ensure we're still registered
         # into the pyro name server
-        self.looping_task(60*10, self._ensure_pyro_ns)
+        if self._use_pyrons():
+            self.looping_task(60*10, self._ensure_pyro_ns)
         return daemon
 
     def _ensure_pyro_ns(self):
+        if not self._use_pyrons():
+            return
         from logilab.common import pyro_ext as pyro
         pyro.ns_reregister(self.pyro_appid, nshost=self.config['pyro-ns-host'])
         self.info('repository re-registered as a pyro object %s',