def create_consumers(endpoints, prefix, topic_details): """Create agent RPC consumers. :param endpoints: The list of endpoints to process the incoming messages. :param prefix: Common prefix for the plugin/agent message queues. :param topic_details: A list of topics. Each topic has a name, an operation, and an optional host param keying the subscription to topic.host for plugin calls. :returns: A common Connection. """ connection = v_rpc.create_connection(new=True) for details in topic_details: topic, operation, node_name = itertools.islice( itertools.chain(details, [None]), 3) topic_name = topics.get_topic_name(prefix, topic, operation) connection.create_consumer(topic_name, endpoints, fanout=True) if node_name: node_topic_name = '%s.%s' % (topic_name, node_name) connection.create_consumer(node_topic_name, endpoints, fanout=False) connection.consume_in_threads() return connection
def __init__(self): super(VNFPlugin, self).__init__() self.novaclient = client.NovaClient() self.glanceclient = client.GlanceClient() self.neutronclient = client.NeutronClient() self._pool = eventlet.GreenPool() self.conf = cfg.CONF self.is_manager_invoked = False self.ns_dict = dict() config.register_root_helper(self.conf) self.root_helper = config.get_root_helper(self.conf) self.agent_mapping = dict() self.endpoints = [VNFManagerCallbacks(self)] self.conn = v_rpc.create_connection(new=True) self.conn.create_consumer( topics.PLUGIN, self.endpoints, fanout=False) self.conn.consume_in_threads()