summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexandre Fayolle <alexandre.fayolle@logilab.fr>2011-03-29 08:36:16 +0200
committerAlexandre Fayolle <alexandre.fayolle@logilab.fr>2011-03-29 08:36:16 +0200
commit63df8e51e18ba2217f1409c840e0ba29a3c9d468 (patch)
tree300dcc1f7029e158c3e67c97a4fd63b599933cb0
parentf0011fb31178325dfa5749b0fa2b20eaec035ff1 (diff)
downloadlogilab-common-63df8e51e18ba2217f1409c840e0ba29a3c9d468.tar.gz
allow to create a pyro server without registering it to a pyro ns (closes #63998)
-rw-r--r--pyro_ext.py34
1 files changed, 24 insertions, 10 deletions
diff --git a/pyro_ext.py b/pyro_ext.py
index 41d7ffa..0f4d279 100644
--- a/pyro_ext.py
+++ b/pyro_ext.py
@@ -82,30 +82,36 @@ def locate_ns(nshost):
def register_object(object, nsid, defaultnsgroup=_MARKER,
- daemonhost=None, nshost=None):
+ daemonhost=None, nshost=None, use_pyrons=True):
"""expose the object as a pyro object and register it in the name-server
+ if use_pyrons is False, then the object is exposed, but no
+ attempt to register it to a pyro nameserver is made.
+
return the pyro daemon object
"""
nsgroup, nsid = ns_group_and_id(nsid, defaultnsgroup)
daemon = _get_daemon(daemonhost)
- nsd = locate_ns(nshost)
- # make sure our namespace group exists
- try:
- nsd.createGroup(nsgroup)
- except errors.NamingError:
- pass
- daemon.useNameServer(nsd)
+ if use_pyrons:
+ nsd = locate_ns(nshost)
+ # make sure our namespace group exists
+ try:
+ nsd.createGroup(nsgroup)
+ except errors.NamingError:
+ pass
+ daemon.useNameServer(nsd)
# use Delegation approach
impl = core.ObjBase()
impl.delegateTo(object)
qnsid = '%s.%s' % (nsgroup, nsid)
uri = daemon.connect(impl, qnsid)
- _PYRO_OBJS[qnsid] = uri
+ _PYRO_OBJS[qnsid] = str(uri)
_LOGGER.info('registered %s a pyro object using group %s and id %s',
object, nsgroup, nsid)
return daemon
+def get_object_uri(qnsid):
+ return _PYRO_OBJS[qnsid]
def ns_unregister(nsid, defaultnsgroup=_MARKER, nshost=None):
"""unregister the object with the given nsid from the pyro name server"""
@@ -122,6 +128,7 @@ def ns_unregister(nsid, defaultnsgroup=_MARKER, nshost=None):
except errors.NamingError:
_LOGGER.warning('%s not registered in pyro name server', nsid)
+
def ns_reregister(nsid, defaultnsgroup=_MARKER, nshost=None):
"""reregister a pyro object into the name server. You only have to specify
the name-server id of the object (though you MUST have gone through
@@ -144,8 +151,11 @@ def ns_reregister(nsid, defaultnsgroup=_MARKER, nshost=None):
nsd.register(qnsid, _PYRO_OBJS[qnsid])
def ns_get_proxy(nsid, defaultnsgroup=_MARKER, nshost=None):
- nsgroup, nsid = ns_group_and_id(nsid, defaultnsgroup)
+ """
+ if nshost is None, the nameserver is found by a broadcast.
+ """
# resolve the Pyro object
+ nsgroup, nsid = ns_group_and_id(nsid, defaultnsgroup)
try:
nsd = locate_ns(nshost)
pyrouri = nsd.resolve('%s.%s' % (nsgroup, nsid))
@@ -158,6 +168,10 @@ def ns_get_proxy(nsid, defaultnsgroup=_MARKER, nshost=None):
'you may have to restart your server-side application' % nsid)
return core.getProxyForURI(pyrouri)
+def get_proxy(pyro_uri):
+ """get a proxy for the passed pyro uri without using a nameserver
+ """
+ return core.getProxyForURI(pyro_uri)
def set_pyro_log_threshold(level):
pyrologger = logging.getLogger('Pyro.%s' % str(id(util.Log)))