From: Kohei Yoshino Date: Wed, 27 Mar 2019 23:40:02 +0000 (-0400) Subject: Bug 1522348 - Bulk assign open bugs to task, enhancement, defect field X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=3f4b28d12f0463b6565edda9483c443ecdb3d55e;p=thirdparty%2Fbugzilla.git Bug 1522348 - Bulk assign open bugs to task, enhancement, defect field --- diff --git a/extensions/BMO/bin/migrate-bug-type.pl b/extensions/BMO/bin/migrate-bug-type.pl new file mode 100644 index 000000000..335866318 --- /dev/null +++ b/extensions/BMO/bin/migrate-bug-type.pl @@ -0,0 +1,158 @@ +#!/usr/bin/env 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 5.10.1; + +use lib qw(. lib local/lib/perl5); + +use Bugzilla; + +# List of products and components that use a bug type other than "defect" +my @MIGRATION_MAP = ( + ['Air Mozilla', 'Events', 'task'], + ['AUS Graveyard', 'Administration', 'task'], + ['Bugzilla', 'Administration', 'task'], + ['bugzilla.mozilla.org', 'Administration', 'task'], + ['bugzilla.mozilla.org', 'Bulk Bug Edit Requests', 'task'], + ['bugzilla.mozilla.org', 'Graveyard Tasks', 'task'], + ['Cloud Services', 'Iodide', 'task'], + ['Cloud Services', 'Operations', 'task'], + ['Cloud Services', 'Operations: Activedata', 'task'], + ['Cloud Services', 'Operations: AMO', 'task'], + ['Cloud Services', 'Operations: Antenna', 'task'], + ['Cloud Services', 'Operations: Autopush', 'task'], + ['Cloud Services', 'Operations: AWS Account Request', 'task'], + ['Cloud Services', 'Operations: Bzetl', 'task'], + ['Cloud Services', 'Operations: Delivery Console', 'task'], + ['Cloud Services', 'Operations: Deployment Requests', 'task'], + ['Cloud Services', 'Operations: LandoAPI', 'task'], + ['Cloud Services', 'Operations: LandoUI', 'task'], + ['Cloud Services', 'Operations: Marketplace', 'task'], + ['Cloud Services', 'Operations: Metrics/Monitoring', 'task'], + ['Cloud Services', 'Operations: Normandy', 'task'], + ['Cloud Services', 'Operations: Pageshot', 'task'], + ['Cloud Services', 'Operations: Phabricator', 'task'], + ['Cloud Services', 'Operations: Product Delivery', 'task'], + ['Cloud Services', 'Operations: Sentry', 'task'], + ['Cloud Services', 'Operations: Shavar', 'task'], + ['Cloud Services', 'Operations: Storage', 'task'], + ['Community Building', '', 'task'], + ['Conduit', 'Administration', 'task'], + ['Data & BI Services Team', '', 'task'], + ['Data & BI Services Team Graveyard', '', 'task'], + ['Data Compliance', '', 'task'], + ['Data Science', '', 'task'], + ['Developer Engagement', '', 'task'], + ['Developer Services', 'General', 'task'], + ['developer.mozilla.org', 'Account Help', 'task'], + ['developer.mozilla.org', 'Administration', 'task'], + ['developer.mozilla.org', 'Events', 'task'], + ['developer.mozilla.org', 'Marketing', 'task'], + ['developer.mozilla.org', 'User management', 'task'], + ['Enterprise Information Security', '', 'task'], + ['Enterprise Information Security Graveyard', '', 'task'], + ['Finance', '', 'task'], + ['Firefox Build System', 'Task Configuration', 'task'], + ['FSA Graveyard', '', 'task'], + ['Infrastructure & Operations', '', 'task'], + ['Infrastructure & Operations Graveyard', '', 'task'], + ['Internet Public Policy', '', 'task'], + ['Legal Graveyard', '', 'task'], + ['Localization Infrastructure and Tools', 'Administration / Setup', 'task'], + ['Marketing', '', 'task'], + ['Mozilla Foundation', '', 'task'], + ['Mozilla Foundation Communications', '', 'task'], + ['Mozilla Foundation Operations', '', 'task'], + ['Mozilla Grants', '', 'task'], + ['Mozilla Metrics', 'Metrics Operations', 'task'], + ['Mozilla Reps', '', 'task'], + ['Mozilla Reps Graveyard', 'Community IT Requests', 'task'], + ['Mozilla Reps Graveyard', 'Planning', 'task'], + ['mozilla.org', '', 'task'], + ['mozilla.org Graveyard', '', 'task'], + ['NSS', 'CA Certificate Compliance', 'task'], + ['NSS', 'CA Certificate Root Program', 'task'], + ['NSS', 'CA Certificates Code', 'task'], + ['Participation Infrastructure', 'Account Help', 'task'], + ['Participation Infrastructure', 'API Requests', 'task'], + ['Participation Infrastructure', 'Community Ops', 'task'], + ['Participation Infrastructure', 'Data Complaints', 'task'], + ['Privacy Graveyard', '', 'task'], + ['Recruiting', '', 'task'], + ['Snippets', 'Campaign', 'task'], + ['Snippets', 'Surveys', 'task'], + ['Socorro', '', 'task'], + ['support.mozilla.org', 'Army of Awesome', 'task'], + ['support.mozilla.org', 'Code Quality', 'task'], + ['support.mozilla.org', 'Forum', 'task'], + ['support.mozilla.org', 'Knowledge Base Articles', 'task'], + ['support.mozilla.org', 'Knowledge Base Content', 'task'], + ['support.mozilla.org', 'Knowledge Base Software', 'task'], + ['support.mozilla.org', 'Lithium Migration', 'task'], + ['support.mozilla.org', 'Localization', 'task'], + ['support.mozilla.org', 'Mobile', 'task'], + ['support.mozilla.org', 'Questions', 'task'], + ['support.mozilla.org', 'Users and Groups', 'task'], + ['Taskcluster', 'Operations and Service Requests', 'task'], + ['Websites', 'Web Analytics', 'task'], + ['Firefox Build System', 'Mach Core', 'enhancement'], + ['support.mozilla.org - Lithium', 'Feature request', 'enhancement'], +); + +my $dbh = Bugzilla->dbh; + +$dbh->bz_start_transaction; + +say 'Disable the "enhancement" severity'; +$dbh->do('UPDATE bug_severity SET isactive = 0 WHERE value = "enhancement"'); + +say 'Change the type of all bugs to "defect"'; +$dbh->do('UPDATE bugs SET bug_type = "defect"'); + +$dbh->bz_commit_transaction; + +foreach my $target (@MIGRATION_MAP) { + my ($product, $component, $type) = @$target; + + $dbh->bz_start_transaction; + + say 'Select bugs in the product (and component)'; + my $bug_ids = $dbh->selectcol_arrayref( + 'SELECT bug_id FROM bugs AS bug + JOIN products AS product ON bug.product_id = product.id + JOIN components AS component ON bug.component_id = component.id + WHERE product.name = ?' . ($component ? ' AND component.name = ?' : ''), + undef, ($component ? ($product, $component) : ($product))); + + say 'Set type on these bugs'; + # Since it's a silent migration, we don't update the timestamp + if (scalar @$bug_ids) { + $dbh->do('UPDATE bugs SET bug_type = ? + WHERE ' . $dbh->sql_in('bug_id', $bug_ids), undef, ($type)); + } + + say 'Select components'; + my $comp_ids = $dbh->selectcol_arrayref( + 'SELECT component.id FROM components as component + JOIN products AS product ON component.id = product.id + WHERE product.name = ?' . ($component ? ' AND component.name = ?' : ''), + undef, ($component ? ($product, $component) : ($product))); + + say 'Set default bug type on these components'; + if (scalar @$comp_ids) { + $dbh->do('UPDATE components SET default_bug_type = ? + WHERE ' . $dbh->sql_in('id', $comp_ids), undef, ($type)); + } + + $dbh->bz_commit_transaction; +} + +Bugzilla->memcached->clear_all();