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