<div dir="ltr"><div>I'm not fully following this discussion, but have an idea for cross project RPC that has been on the back of my mind for a while.  The idea is to define an RPC class that behaves differently based upon an input config file, basically a nova.conf file.  That way there could be a nova.conf for each project that you want to send RPCs to.  The passed in config file would specify the implementation, the port numbers, the topic names as today, but they can be different for each instance of the RPC object.  The RPC API would remain untouched.<br>
<br>This could be done by adding to the config file name to the __init__ method of the RpcProxy class in openstack/common/rpc/proxy.py.  The __init__ method could create a _rpcimpl instance variable with the loaded method names imported using the same technique as the _get_impl method does in __init__.py.<br>
<br></div>Then, the usage of rpc.call(), for example, in the RpcProxy class would be replaced with self._rpcimpl.call().<br><div><br></div><div>Cross project RPC would simply be an instantiation of an RPC object for the given project as identified by a config file and then usage of that object.<br>
<br></div><div>I believe several other things would have to be worked out in the RPC modules (amqp, kombu, qpid, zmq) to make sure the appropriate config file object were accessed.  And perhaps the nova/openstack/common/cfg module would have be made to allow the instantiation of different objects based upon a config file name input.<br>
<br></div><div>Half baked idea, I know, but maybe worth considering.<br></div><div><div><div><br></div><div>Ray<br></div></div></div></div>