autotest: Don't delete labels that are replaced by static labels.
BUG=chromium:792309
TEST=Run './site_utils/label_cleaner.py -p board:' with local migrated
mysql.
Change-Id: Ia263d3b54576b3ed01c9d57b2d1688333ee34875
Reviewed-on: https://chromium-review.googlesource.com/833330
Commit-Ready: Xixuan Wu <xixuan@chromium.org>
Tested-by: Xixuan Wu <xixuan@chromium.org>
Reviewed-by: Xixuan Wu <xixuan@chromium.org>
diff --git a/site_utils/label_cleaner.py b/site_utils/label_cleaner.py
index d302a6c..4ea06e3 100755
--- a/site_utils/label_cleaner.py
+++ b/site_utils/label_cleaner.py
@@ -46,6 +46,8 @@
'AUTOTEST_WEB', 'password')
DATABASE = global_config.global_config.get_config_value(
'AUTOTEST_WEB', 'database')
+RESPECT_STATIC_LABELS = global_config.global_config.get_config_value(
+ 'SKYLAB', 'respect_static_labels', type=bool, default=False)
SELECT_USED_LABELS_FORMAT = """
SELECT DISTINCT(label_id) FROM afe_autotests_dependency_labels UNION
@@ -59,6 +61,9 @@
SELECT_LABELS_FORMAT = """
SELECT id FROM afe_labels WHERE name %s
"""
+SELECT_REPLACED_LABELS = """
+SELECT label_id FROM afe_replaced_labels
+"""
DELETE_LABELS_FORMAT = """
DELETE FROM afe_labels WHERE id in (%s)
@@ -98,7 +103,15 @@
logging.debug('Running: %r', sql)
cursor.execute(sql)
rows = cursor.fetchall()
- return set(r[0] for r in rows)
+ # Don't delete labels whose replaced_by_static_label=True, since they're
+ # actually maintained by afe_static_labels, not afe_labels.
+ if not RESPECT_STATIC_LABELS:
+ return set(r[0] for r in rows)
+ else:
+ cursor.execute(SELECT_REPLACED_LABELS)
+ replaced_labels = cursor.fetchall()
+ replaced_label_ids = set([r[0] for r in replaced_labels])
+ return set(r[0] for r in rows) - replaced_label_ids
def _delete_labels(conn, labels):