]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mgr/telemetry: track telemetry report revisions
authorSage Weil <sage@redhat.com>
Thu, 25 Jul 2019 21:45:09 +0000 (16:45 -0500)
committerSage Weil <sage@redhat.com>
Thu, 1 Aug 2019 01:28:12 +0000 (20:28 -0500)
Assign revisions to track changes to the content of the telemetry
reports.

Track the revision when the user opts in or out.

Signed-off-by: Sage Weil <sage@redhat.com>
src/pybind/mgr/telemetry/module.py

index 2742da4a9cdfb15643fcffc2e6ab7abbf3a2d673..366d3be91bcb28be86c6c5a4263c7d8fdb6195ef 100644 (file)
@@ -24,6 +24,27 @@ LICENSE='sharing-1-0'
 LICENSE_NAME='Community Data License Agreement - Sharing - Version 1.0'
 LICENSE_URL='https://cdla.io/sharing-1-0/'
 
+# If the telemetry revision has changed since this point, re-require
+# an opt-in.  This should happen each time we add new information to
+# the telemetry report.
+LAST_REVISION_RE_OPT_IN = 2
+
+# Latest revision of the telemetry report.  Bump this each time we make
+# *any* change.
+REVISION = 2
+
+# History of revisions
+# --------------------
+#
+# Version 1:
+#   Mimic and/or nautilus are lumped together here, since
+#   we didn't track revisions yet.
+#
+# Version 2:
+#   - added revision tracking, nagging, etc.
+#   - added config option changes
+#   - added channels
+#   - added explicit license acknowledgement to the opt-in process
 
 class Module(MgrModule):
     config = dict()
@@ -50,6 +71,11 @@ class Module(MgrModule):
             'type': 'bool',
             'default': False
         },
+        {
+            'name': 'last_opt_revision',
+            'type': 'int',
+            'default': 1,
+        },
         {
             'name': 'leaderboard',
             'type': 'bool',
@@ -378,9 +404,11 @@ class Module(MgrModule):
             if command.get('license') != LICENSE:
                 return -errno.EPERM, '', "Telemetry data is licensed under the " + LICENSE_NAME + " (" + LICENSE_URL + ").\nTo enable, add '--license " + LICENSE + "' to the 'ceph telemetry on' command."
             self.set_module_option('enabled', True)
+            self.set_module_option('last_opt_revision', REVISION)
             return 0, '', ''
         elif command['prefix'] == 'telemetry off':
             self.set_module_option('enabled', False)
+            self.set_module_option('last_opt_revision', REVISION)
             return 0, '', ''
         elif command['prefix'] == 'telemetry send':
             self.last_report = self.compile_report()