Exemplo n.º 1
0
    def _send(self, template, wait_results):

        msg_id = template.get('ID', uuid.uuid4().hex)
        if wait_results:
            event = eventlet.event.Event()
            listener = self._environment.agentListener
            listener.subscribe(msg_id, event)
            listener.start()

        msg = messaging.Message()
        msg.body = template
        msg.id = msg_id

        with common.create_rmq_client() as client:
            client.declare(self._queue, enable_ha=True, ttl=86400000)
            client.send(message=msg, key=self._queue)

        if wait_results:
            result = event.wait()

            if not result:
                return None

            if result.get('FormatVersion', '1.0.0').startswith('1.'):
                return self._process_v1_result(result)
            else:
                return self._process_v2_result(result)
        else:
            return None
Exemplo n.º 2
0
    def _send(self, template, wait_results):

        msg_id = template.get('ID', uuid.uuid4().hex)
        if wait_results:
            event = eventlet.event.Event()
            listener = self._environment.agentListener
            listener.subscribe(msg_id, event)
            listener.start()

        msg = messaging.Message()
        msg.body = template
        msg.id = msg_id

        with common.create_rmq_client() as client:
            client.declare(self._queue, enable_ha=True, ttl=86400000)
            client.send(message=msg, key=self._queue)

        if wait_results:
            result = event.wait()

            if not result:
                return None

            if result.get('FormatVersion', '1.0.0').startswith('1.'):
                return self._process_v1_result(result)
            else:
                return self._process_v2_result(result)
        else:
            return None
Exemplo n.º 3
0
 def _receive(self):
     with common.create_rmq_client() as client:
         client.declare(self._results_queue, enable_ha=True, ttl=86400000)
         with client.open(self._results_queue) as subscription:
             while True:
                 msg = subscription.get_message()
                 if not msg:
                     continue
                 msg.ack()
                 msg_id = msg.body.get('SourceID', msg.id)
                 if msg_id in self._subscriptions:
                     event = self._subscriptions.pop(msg_id)
                     event.send(msg.body)