]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mgr/telemetry: check for errors when sending report 27002/head
authorDan Mick <dan.mick@redhat.com>
Sat, 16 Mar 2019 03:05:46 +0000 (20:05 -0700)
committerDan Mick <dan.mick@redhat.com>
Sat, 16 Mar 2019 03:08:03 +0000 (20:08 -0700)
There was no error checking, and the server has been failing for
some time, but no one noticed.  Oops.

Signed-off-by: Dan Mick <dan.mick@redhat.com>
src/pybind/mgr/telemetry/module.py

index bdb4c6382bec40d596ad6b131722840d08d2ca58..99313a9c01fdc63129d8c803693a3e6b564a7216 100644 (file)
@@ -263,7 +263,11 @@ class Module(MgrModule):
             proxies['http'] = self.proxy
             proxies['https'] = self.proxy
 
-        requests.put(url=self.url, json=report, proxies=proxies)
+        resp = requests.put(url=self.url, json=report, proxies=proxies)
+        if not resp.ok:
+            self.log.error("Report send failed: %d %s %s" %
+                           (resp.status_code, resp.reason, resp.text))
+        return resp
 
     def handle_command(self, inbuf, command):
         if command['prefix'] == 'telemetry status':
@@ -279,8 +283,16 @@ class Module(MgrModule):
             return 0, '', ''
         elif command['prefix'] == 'telemetry send':
             self.last_report = self.compile_report()
-            self.send(self.last_report)
-            return 0, 'Report send to {0}'.format(self.url), ''
+            resp = self.send(self.last_report)
+            if resp.ok:
+                return 0, 'Report sent to {0}'.format(self.url), ''
+            return 1, '', 'Failed to send report to %s: %d %s %s' % (
+                self.url,
+                resp.status_code,
+                resp.reason,
+                resp.text
+            )
+
         elif command['prefix'] == 'telemetry show':
             report = self.last_report
             if not report:
@@ -328,9 +340,12 @@ class Module(MgrModule):
                     self.log.exception('Exception while compiling report:')
 
                 try:
-                    self.send(self.last_report)
-                    self.last_upload = now
-                    self.set_store('last_upload', str(now))
+                    resp = self.send(self.last_report)
+                    # self.send logs on failure; only update last_upload
+                    # if we succeed
+                    if resp.ok:
+                        self.last_upload = now
+                        self.set_store('last_upload', str(now))
                 except:
                     self.log.exception('Exception while sending report:')
             else: