Пример #1
0
 def api_sync_call(self, msg_str):
     try:
         reply = self.bus.call(msg_str)
         return simplejson.dumps(reply)
     except Exception as e:
         log.debug(utils.get_exception_stacktrace())
         return str(e), 400
Пример #2
0
    def _message_handler(self, body, message):
        try:
            msg = simplejson.loads(body)
            log.debug('received reply: %s' % body)
            if len(msg.keys()) != 1:
                raise CloudBusError('message must be dictionary which has single entry where key is message name, invalid message:%s' % body)

            msg_body = msg.values()[0]
            headers = msg_body.get("headers")
            if not headers:
                raise CloudBusError('cannot find headers, invalid message: %s' % body)

            if not headers.has_key(self.IS_MESSAGE_REPLY):
                raise CloudBusError('received none message reply: %s' % body)

            correlation_id = headers.get(self.CORRELATION_ID)
            if not correlation_id:
                raise CloudBusError('cannot find correlationId in headers, invalid reply: %s' % body)

            req = self.requests.get(correlation_id)
            if not req:
                raise CloudBusError('cannot find request[id:%s], drop reply: %s' % (correlation_id, req))

            req.callback(msg)
            del self.requests[correlation_id]
        except:
            log.debug(utils.get_exception_stacktrace())
        finally:
            message.ack()
Пример #3
0
 def api_sync_call(self, msg_str):
     try:
         reply = self.bus.call(msg_str)
         return simplejson.dumps(reply)
     except Exception as e:
         log.debug(utils.get_exception_stacktrace())
         return str(e), 400
Пример #4
0
    def _api_event_handler(self, body, message):
        try:
            evt = simplejson.loads(body)
            log.debug('received event: %s' % body)
            if len(evt.keys()) != 1:
                raise CloudBusError(
                    'api event must be dictionary which has single entry where key is event name. invalid event:%s'
                    % body)

            evt_body = evt.values()[0]
            api_id = evt_body.get('apiId')
            if not api_id:
                raise CloudBusError('cannot find apiId, invalid event:%s' %
                                    body)

            req = self.requests.get(api_id)
            if not req:
                log.debug('drop event[apiId:%s], its not mine. %s' %
                          (api_id, body))
                return

            req.callback(evt)
            del self.requests[api_id]
        except:
            log.debug(utils.get_exception_stacktrace())
        finally:
            message.ack()
Пример #5
0
    def api_call(self, msg_str):
        msgJson = json.loads(msg_str);
        sessionJson = msgJson.values()[0]['session']
        print 'session[id]:', 'id' in session
        if 'id' in session:
            print 'session[id]:', session['id']
        print "sessionJson['uuid']", sessionJson['uuid']
        if 'id' in session:
            print session['id'] == sessionJson['uuid']
        if 'id' not in session or session['id'] != sessionJson['uuid']:
            print 'Join Room: ', sessionJson['uuid'], '  ...............................'
            join_room(sessionJson['uuid'])
            session['id'] = sessionJson['uuid']

        # receipt = self.Receipt()
        def cb(evt):
            # receipt.status = receipt.DONE
            # receipt.rsp = evt
            evt.values()[0]['session'] = sessionJson
            socketio.emit('call_ret', {'msg': json.dumps(evt)}, room=sessionJson['uuid'])

        # self.api_tasks[receipt.id] = receipt
        try:
            self.bus.send(msg_str, cb)
            # return receipt.to_json()
        except Exception as e:
            del self.api_tasks[receipt.id]
            log.debug(utils.get_exception_stacktrace())
Пример #6
0
    def _canonical_event_handler(self, body, message):
        try:
            evt = simplejson.loads(body)
            if len(evt.keys()) != 1:
                return

            evt_name = evt.keys()[0]
            if evt_name != "org.zstack.core.cloudbus.CanonicalEvent":
                return
            log.debug("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++")

            socketio.emit('canonical_event', evt, 'admin')

            log.debug('received a canonical event: %s' % body)
            evt_body = evt.values()[0]

            path = evt_body.get('path')
            handler = self.canonical_event_handlers.get(path, None)
            if not handler:
                return

            handler(evt_body.get('content'))
        except:
            log.debug(utils.get_exception_stacktrace())
        finally:
            message.ack()
Пример #7
0
    def api_async_call(self, msg_str):
        receipt = self.Receipt()
        def cb(evt):
            receipt.status = receipt.DONE
            receipt.rsp = evt

        self.api_tasks[receipt.id] = receipt
        try:
            self.bus.send(msg_str, cb)
            return receipt.to_json()
        except Exception as e:
            del self.api_tasks[receipt.id]
            log.debug(utils.get_exception_stacktrace())
            return str(e), 400
Пример #8
0
    def api_async_call(self, msg_str):
        receipt = self.Receipt()

        def cb(evt):
            receipt.status = receipt.DONE
            receipt.rsp = evt

        self.api_tasks[receipt.id] = receipt
        try:
            self.bus.send(msg_str, cb)
            return receipt.to_json()
        except Exception as e:
            del self.api_tasks[receipt.id]
            log.debug(utils.get_exception_stacktrace())
            return str(e), 400
Пример #9
0
    def _api_event_handler(self, body, message):
        try:
            evt = simplejson.loads(body)
            log.debug('received event: %s' % body)
            if len(evt.keys()) != 1:
                raise CloudBusError('api event must be dictionary which has single entry where key is event name. invalid event:%s' % body)

            evt_body = evt.values()[0]
            api_id = evt_body.get('apiId')
            if not api_id:
                raise CloudBusError('cannot find apiId, invalid event:%s' % body)

            req = self.requests.get(api_id)
            if not req:
                log.debug('drop event[apiId:%s], its not mine. %s' % (api_id, body))
                return

            req.callback(evt)
            del self.requests[api_id]
        except:
            log.debug(utils.get_exception_stacktrace())
        finally:
            message.ack()
Пример #10
0
    def _canonical_event_handler(self, body, message):
        try:
            evt = simplejson.loads(body)
            if len(evt.keys()) != 1:
                return

            evt_name = evt.keys()[0]
            if evt_name != "org.zstack.core.cloudbus.CanonicalEvent":
                return

            log.debug('received a canonical event: %s' % body)
            evt_body = evt.values()[0]

            path = evt_body.get('path')
            handler = self.canonical_event_handlers.get(path, None)
            if not handler:
                return

            handler(evt_body.get('content'))
        except:
            log.debug(utils.get_exception_stacktrace())
        finally:
            message.ack()
Пример #11
0
    def _message_handler(self, body, message):
        try:
            msg = simplejson.loads(body)
            log.debug('received reply: %s' % body)
            if len(msg.keys()) != 1:
                raise CloudBusError(
                    'message must be dictionary which has single entry where key is message name, invalid message:%s'
                    % body)

            msg_body = msg.values()[0]
            headers = msg_body.get("headers")
            if not headers:
                raise CloudBusError(
                    'cannot find headers, invalid message: %s' % body)

            if not headers.has_key(self.IS_MESSAGE_REPLY):
                raise CloudBusError('received none message reply: %s' % body)

            correlation_id = headers.get(self.CORRELATION_ID)
            if not correlation_id:
                raise CloudBusError(
                    'cannot find correlationId in headers, invalid reply: %s' %
                    body)

            req = self.requests.get(correlation_id)
            if not req:
                raise CloudBusError(
                    'cannot find request[id:%s], drop reply: %s' %
                    (correlation_id, req))

            req.callback(msg)
            del self.requests[correlation_id]
        except:
            log.debug(utils.get_exception_stacktrace())
        finally:
            message.ack()