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
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()
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()
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())
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()
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
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()
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()
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()