From 12ab0fa91d718ebec53a882a325982bed5df94e9 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Thu, 25 Jul 2019 16:45:09 -0500 Subject: [PATCH] mgr/telemetry: track telemetry report revisions 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 (cherry picked from commit b93e4050261b962449c9721cea713616ce5e03bd) --- src/pybind/mgr/telemetry/module.py | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/src/pybind/mgr/telemetry/module.py b/src/pybind/mgr/telemetry/module.py index 98aeb85462195..2d60beb300020 100644 --- a/src/pybind/mgr/telemetry/module.py +++ b/src/pybind/mgr/telemetry/module.py @@ -23,6 +23,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() @@ -49,6 +70,11 @@ class Module(MgrModule): 'type': 'bool', 'default': False }, + { + 'name': 'last_opt_revision', + 'type': 'int', + 'default': 1, + }, { 'name': 'leaderboard', 'type': 'bool', @@ -369,9 +395,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() -- 2.39.5