diff options
author | Alexandre Fayolle <alexandre.fayolle@logilab.fr> | 2011-03-29 08:36:16 +0200 |
---|---|---|
committer | Alexandre Fayolle <alexandre.fayolle@logilab.fr> | 2011-03-29 08:36:16 +0200 |
commit | 63df8e51e18ba2217f1409c840e0ba29a3c9d468 (patch) | |
tree | 300dcc1f7029e158c3e67c97a4fd63b599933cb0 | |
parent | f0011fb31178325dfa5749b0fa2b20eaec035ff1 (diff) | |
download | logilab-common-63df8e51e18ba2217f1409c840e0ba29a3c9d468.tar.gz |
allow to create a pyro server without registering it to a pyro ns (closes #63998)
-rw-r--r-- | pyro_ext.py | 34 |
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))) |