Revision 231db3a5 daemons/ganeti-masterd

b/daemons/ganeti-masterd
157 157
        logging.debug("client closed connection")
158 158
        break
159 159

  
160
      request = serializer.LoadJson(msg)
161
      logging.debug("request: %s", request)
162
      if not isinstance(request, dict):
163
        logging.error("wrong request received: %s", msg)
164
        break
165

  
166
      method = request.get(luxi.KEY_METHOD, None)
167
      args = request.get(luxi.KEY_ARGS, None)
168
      if method is None or args is None:
169
        logging.error("no method or args in request")
170
        break
160
      (method, args) = luxi.ParseRequest(msg)
171 161

  
172 162
      success = False
173 163
      try:
174 164
        result = self._ops.handle_request(method, args)
175 165
        success = True
176 166
      except errors.GenericError, err:
177
        success = False
178 167
        result = errors.EncodeException(err)
179 168
      except:
180 169
        logging.error("Unexpected exception", exc_info=True)
181
        err = sys.exc_info()
182
        result = "Caught exception: %s" % str(err[1])
170
        result = "Caught exception: %s" % str(sys.exc_info()[1])
183 171

  
184
      response = {
185
        luxi.KEY_SUCCESS: success,
186
        luxi.KEY_RESULT: result,
187
        }
188
      logging.debug("response: %s", response)
189
      self.send_message(serializer.DumpJson(response))
172
      self.send_message(luxi.FormatResponse(success, result))
190 173

  
191 174
  def read_message(self):
192 175
    while not self._msgs:
......
199 182
    return self._msgs.popleft()
200 183

  
201 184
  def send_message(self, msg):
202
    #print "sending", msg
203 185
    # TODO: sendall is not guaranteed to send everything
204 186
    self.request.sendall(msg + self.EOM)
205 187

  

Also available in: Unified diff