summaryrefslogtreecommitdiffstats
path: root/extensions/BMO/bin
diff options
context:
space:
mode:
authorByron Jones <glob@mozilla.com>2014-11-06 06:05:06 +0100
committerByron Jones <glob@mozilla.com>2014-11-06 06:05:20 +0100
commit27ca752688b360f51ddec9761b006f1a3592c2b4 (patch)
tree476bdaa2d7cd1a1a5c9cf8115927dc595596cdba /extensions/BMO/bin
parent247b01c22effc8b6d236d54cc377c7b808af7a82 (diff)
downloadbugzilla-27ca752688b360f51ddec9761b006f1a3592c2b4.tar.gz
bugzilla-27ca752688b360f51ddec9761b006f1a3592c2b4.tar.xz
Bug 1093952: need to remove whiteboard entries from lots of bugs
Diffstat (limited to 'extensions/BMO/bin')
-rwxr-xr-xextensions/BMO/bin/bug_1093952.pl92
1 files changed, 92 insertions, 0 deletions
diff --git a/extensions/BMO/bin/bug_1093952.pl b/extensions/BMO/bin/bug_1093952.pl
new file mode 100755
index 000000000..55d68b9be
--- /dev/null
+++ b/extensions/BMO/bin/bug_1093952.pl
@@ -0,0 +1,92 @@
+#!/usr/bin/perl
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# This Source Code Form is "Incompatible With Secondary Licenses", as
+# defined by the Mozilla Public License, v. 2.0.
+
+use strict;
+use warnings;
+
+use FindBin qw($RealBin);
+use lib "$RealBin/../../..";
+
+use Bugzilla;
+use Bugzilla::Component;
+use Bugzilla::Constants qw( USAGE_MODE_CMDLINE );
+use Bugzilla::Field;
+use Bugzilla::Product;
+use Bugzilla::User;
+
+Bugzilla->usage_mode(USAGE_MODE_CMDLINE);
+
+my $dbh = Bugzilla->dbh;
+
+my $infra = Bugzilla::Product->check({ name => 'Infrastructure & Operations' });
+my $relops_id = Bugzilla::Component->check({ product => $infra, name => 'RelOps' })->id;
+my $puppet_id = Bugzilla::Component->check({ product => $infra, name => 'RelOps: Puppet' })->id;
+my $infra_id = $infra->id;
+my $components = $dbh->sql_in('component_id', [ $relops_id, $puppet_id ]);
+
+print "Searching for bugs..\n";
+my $bugs = $dbh->selectall_arrayref(<<EOF, { Slice => {} });
+ SELECT
+ bug_id,
+ product_id,
+ component_id,
+ status_whiteboard
+ FROM
+ bugs
+ WHERE
+ (
+ (product_id = $infra_id)
+ AND NOT ($components)
+ AND (status_whiteboard LIKE '%[kanban:engops:https://mozilla.kanbanize.com/ctrl_board/6/%')
+ ) OR (
+ status_whiteboard LIKE '%[kanban:engops:https://kanbanize.com/ctrl_board/6/%'
+ )
+EOF
+die "No suitable bugs found\n" unless @$bugs;
+printf "About to fix %s bugs\n", scalar(@$bugs);
+print "Press <Ctrl-C> to stop or <Enter> to continue...\n";
+getc();
+
+my $nobody = Bugzilla::User->check({ name => 'nobody@mozilla.org' });
+my $field = Bugzilla::Field->check({ name => 'status_whiteboard' });
+my $when = $dbh->selectrow_array('SELECT LOCALTIMESTAMP(0)');
+
+my $sth_bugs = $dbh->prepare("
+ UPDATE bugs
+ SET status_whiteboard = ?,
+ delta_ts = ?,
+ lastdiffed = ?
+ WHERE bug_id = ?
+");
+my $sth_activity = $dbh->prepare("
+ INSERT INTO bugs_activity(bug_id, who, bug_when, fieldid, removed, added)
+ VALUES (?, ?, ?, ?, ?, ?)
+");
+
+$dbh->bz_start_transaction();
+foreach my $bug (@$bugs) {
+ my $bug_id = $bug->{bug_id};
+ my $whiteboard = $bug->{status_whiteboard};
+ print "bug $bug_id\n $whiteboard\n";
+
+ my $updated = $whiteboard;
+ $updated =~ s#\[kanban:engops:https://kanbanize\.com/ctrl_board/6/[^\]]*\]\s*##g;
+ if ($bug->{product_id} == $infra->id
+ && $bug->{component_id} != $relops_id
+ && $bug->{component_id} != $puppet_id
+ ) {
+ $updated =~ s#\[kanban:engops:https://mozilla\.kanbanize\.com/ctrl_board/6/[^\]]*\]\s*##g;
+ }
+ print " $updated\n";
+
+ $sth_bugs->execute($updated, $when, $when, $bug_id);
+ $sth_activity->execute($bug_id, $nobody->id, $when, $field->id, $whiteboard, $updated);
+}
+$dbh->bz_commit_transaction();
+
+print "Done.\n";