blob: 79d94f52ef18d254a2932a71ec7a4dd5c17e2e37 [file] [log] [blame]
Adrià Vilanova Martínezf19ea432024-01-23 20:20:52 +01001# Copyright 2016 The Chromium Authors
2# Use of this source code is governed by a BSD-style license that can be
3# found in the LICENSE file.
Copybara854996b2021-09-07 19:36:02 +00004
Adrià Vilanova Martínez515639b2021-07-06 16:43:59 +02005"""Defines settings for the avm99963 bugs monorail instance."""
Copybara854996b2021-09-07 19:36:02 +00006from __future__ import print_function
7from __future__ import division
8from __future__ import absolute_import
9
10import os
Adrià Vilanova Martínezf19ea432024-01-23 20:20:52 +010011import six
Copybara854996b2021-09-07 19:36:02 +000012
13from google.appengine.api import app_identity
14
15from framework import framework_constants
Adrià Vilanova Martínezf19ea432024-01-23 20:20:52 +010016from mrproto import project_pb2
17from mrproto import site_pb2
Copybara854996b2021-09-07 19:36:02 +000018
19
20# This file is divided into the following parts:
21# 1. Settings you must edit before deploying your site.
22# 2. Settings you would edit on certain occasions while maintaining your site.
23# 3. Settings enable specific features.
24# 4. Settings that you can usually leave as-is.
25
26# TODO(jrobbins): Store these settings in the database and implement
27# servlets for domain admins to edit them without needing to redeploy the
28# app.
29
30
31####
32# Part 1: settings that you must edit before deploying your site.
33
34# Email address that is offered to users who might need help using the tool.
Adrià Vilanova Martínez515639b2021-07-06 16:43:59 +020035feedback_email = 'me+monorail.feedback@avm99963.com'
Copybara854996b2021-09-07 19:36:02 +000036
37# For debugging when running in staging: send all outbound
38# email to this address rather than to the actual address that
39# it would normally be sent to.
Adrià Vilanova Martínez515639b2021-07-06 16:43:59 +020040send_all_email_to = 'monorail-staging-emails+all+%(user)s+%(domain)s@dontsend.avm99963.com'
Copybara854996b2021-09-07 19:36:02 +000041
42# For debugging when running the server locally: send all outbound
43# email to this address rather than to the actual address that
44# it would normally be sent to.
45send_local_email_to = (
46 send_all_email_to or
Adrià Vilanova Martínez515639b2021-07-06 16:43:59 +020047 'monorail-staging-emails+dev+%(user)s+%(domain)s@dontsend.avm99963.com')
Copybara854996b2021-09-07 19:36:02 +000048
49# User to send emails from Monorail as. The reply_to sections of emails will be
50# set to appspotmail addresses.
51# Note: If configuring a new monorail instance without DNS records and reserved
52# email addresses then setting these values to
53# 'reply@${app_id}.appspotmail.com' and 'noreply@{app_id}.appspotmail.com'
54# is likely the best option.
Adrià Vilanova Martínez515639b2021-07-06 16:43:59 +020055
56# Old values (TODO: set up DNS records and uncomment this):
57#send_email_as_format = 'monorail@%(domain)s'
58#send_noreply_email_as_format = 'monorail+noreply@%(domain)s'
59
60send_email_as_format = 'reply@avm99963-bugs.appspotmail.com'
61send_noreply_email_as_format = 'noreply@avm99963-bugs.appspotmail.com'
Copybara854996b2021-09-07 19:36:02 +000062
63# The default is to look for a database named "monorail" in replicas
64# named "replica-00" .. "replica-09"
65# Replica names for -prod, -staging, and -dev may diverge if replicas ever fail.
66# In such cases the db_replica_names list can be overwritten in Part 5.
67db_database_name = 'monorail'
68db_primary_name = 'primary'
69db_replica_prefix = 'replica'
Adrià Vilanova Martínez515639b2021-07-06 16:43:59 +020070db_region = 'europe-west1'
Copybara854996b2021-09-07 19:36:02 +000071
72# The default connection pool size for mysql connections.
73db_cnxn_pool_size = 20
74
75# The number of logical database shards used. Each replica is complete copy
76# of the primary, so any replica DB can answer queries about any logical shard.
Adrià Vilanova Martínez515639b2021-07-06 16:43:59 +020077num_logical_shards = 1
Copybara854996b2021-09-07 19:36:02 +000078
79# "Learn more" link for the site home page
80learn_more_link = None
81
82# Site name, displayed above the search box on the site home page.
Adrià Vilanova Martínez515639b2021-07-06 16:43:59 +020083site_name = 'avm99963 bugs'
Copybara854996b2021-09-07 19:36:02 +000084
85# Who is allowed to create new projects? Set to ANYONE or ADMIN_ONLY.
86project_creation_restriction = site_pb2.UserTypeRestriction.ADMIN_ONLY
87
88# Default access level when creating a new project.
89default_access_level = project_pb2.ProjectAccess.ANYONE
90
91# Possible access levels to offer when creating a new project.
92allowed_access_levels = [
93 project_pb2.ProjectAccess.ANYONE,
94 project_pb2.ProjectAccess.MEMBERS_ONLY]
95
96# Who is allowed to create user groups? Set to ANYONE or ADMIN_ONLY.
97group_creation_restriction = site_pb2.UserTypeRestriction.ADMIN_ONLY
98
99# Who is allowed to create hotlists? Set to ANYONE or ADMIN_ONLY.
100hotlist_creation_restriction = site_pb2.UserTypeRestriction.ANYONE
101
102# Text that mentions these words as shorthand host names will be autolinked
103# regardless of the lack of "https://" or ".com".
104autolink_shorthand_hosts = [
Adrià Vilanova Martínez515639b2021-07-06 16:43:59 +0200105 'go',
Copybara854996b2021-09-07 19:36:02 +0000106 ]
Adrià Vilanova Martínez515639b2021-07-06 16:43:59 +0200107autolink_numeric_shorthand_hosts = []
Copybara854996b2021-09-07 19:36:02 +0000108
109
110# We only allow self-service account linking invites when the child account is
111# linking to a parent account in an allowed domain.
112linkable_domains = {
113 # Child account domain: [parent account domains]
Copybara854996b2021-09-07 19:36:02 +0000114}
115
116
117####
118# Part 2: Settings you would edit on certain occasions.
119
120# Read-only mode prevents changes while we make server-side changes.
121read_only = False
122
123# Timestamp used to notify users when the read only mode or other status
124# described in the banner message takes effect. It is
125# expressed as a tuple of ints: (year, month, day[, hour[, minute[, second]]])
126# e.g. (2009, 3, 20, 21, 45) represents March 20 2009 9:45PM UTC.
127banner_time = None
128
129# Display a site maintenance banner on every monorail page.
130banner_message = ''
131
132# User accounts with email addresses at these domains are all banned.
133banned_user_domains = []
134
135# We use this for specifying cloud task parent
Adrià Vilanova Martínez515639b2021-07-06 16:43:59 +0200136CLOUD_TASKS_REGION = 'europe-west1'
Copybara854996b2021-09-07 19:36:02 +0000137
138# We only send subscription notifications to users who have visited the
139# site in the last 6 months.
140subscription_timeout_secs = 180 * framework_constants.SECS_PER_DAY
141
142# Location of GCS spam classification staging trainer. Whenever the training
143# code is changed, this should be updated to point to the new package.
144trainer_staging = ('gs://monorail-staging-mlengine/spam_trainer_1517870972/'
145 'packages/befc9b29d9beb7e89d509bd1e9866183c138e3a32317cc'
146 'e253342ac9f8e7c375/trainer-0.1.tar.gz')
147
148# Location of GCS spam classification prod trainer. Whenever the training
149# code is changed, this should be updated to point to the new package.
150trainer_prod = ('gs://monorail-prod-mlengine/spam_trainer_1521755738/packages/'
151 '3339dfcb5d7b6c9d714fb9b332fd72d05823e9a1850ceaf16533a6124bcad'
152 '6fd/trainer-0.1.tar.gz')
153####
154# Part 3: Settings that enable specific features
155
156# Enables "My projects" drop down menu
157enable_my_projects_menu = True
158
159# Enables stars in the UI for projects
160enable_project_stars = True
161
162# Enables stars in the UI for users
163enable_user_stars = True
164
165# Enable quick edit mode in issue peek dialog and show dialog on hover
166enable_quick_edit = True
167
168
169####
170# Part 4: Settings that you can usually leave as-is.
171
172# local_mode makes the server slower and more dynamic for easier debugging.
173# E.g., template files are reloaded on each request.
Copybara854996b2021-09-07 19:36:02 +0000174unit_test_mode = os.environ['SERVER_SOFTWARE'].startswith('test')
Adrià Vilanova Martínezf19ea432024-01-23 20:20:52 +0100175local_mode = not (os.getenv('GAE_ENV') == 'standard' or unit_test_mode)
Copybara854996b2021-09-07 19:36:02 +0000176
Adrià Vilanova Martínez097a8242024-01-26 21:20:10 +0100177# If we assume 1KB each, then this would be 10 MB for this cache in frontends
Copybara854996b2021-09-07 19:36:02 +0000178# that have only 1024 MB total.
Adrià Vilanova Martínez097a8242024-01-26 21:20:10 +0100179issue_cache_max_size = 10 * 1000
Copybara854996b2021-09-07 19:36:02 +0000180
Adrià Vilanova Martínez097a8242024-01-26 21:20:10 +0100181# If we assume 1KB each, then this would be 10 MB for this cache in frontends
Copybara854996b2021-09-07 19:36:02 +0000182# that have only 1024 MB total.
Adrià Vilanova Martínez097a8242024-01-26 21:20:10 +0100183comment_cache_max_size = 10 * 1000
Copybara854996b2021-09-07 19:36:02 +0000184
Adrià Vilanova Martínez097a8242024-01-26 21:20:10 +0100185user_cache_max_size = 10 * 1000
Copybara854996b2021-09-07 19:36:02 +0000186
187# Normally we use the default namespace, but during development it is
188# sometimes useful to run a tainted version on staging that has a separate
189# memcache namespace. E.g., os.environ.get('CURRENT_VERSION_ID')
190memcache_namespace = None # Should be None when committed.
Copybara854996b2021-09-07 19:36:02 +0000191
192# Recompute derived issue fields via work items rather than while
193# the user is waiting for a page to load.
194recompute_derived_fields_in_worker = True
195
196# The issue search SQL queries have a LIMIT clause with this amount.
197search_limit_per_shard = 10 * 1000 # This is more than all open in chromium.
198
199# The GAE search feature is slow, so don't request too many results.
200# This limit is approximately the most results that we can get from
201# the fulltext engine in 1s. If we reach this limit in any shard,
202# the user will see a message explaining that results were capped.
203fulltext_limit_per_shard = 1 * 2000
204
205# Retrieve at most this many issues from the DB when showing an issue grid.
206max_issues_in_grid = 6000
207# This is the most tiles that we show in grid view. If the number of results
208# is larger than this, we display IDs instead.
209max_tiles_in_grid = 1000
210
211# Maximum number of project results to display on a single pagination page
212max_project_search_results_per_page = 100
213
214# Maximum number of results per pagination page, regardless of what
215# the user specified in their request. This exists to prevent someone
216# from doing a DoS attack that makes our servers do a huge amount of work.
217max_artifact_search_results_per_page = 1000
218
219# Maximum number of comments to display on a single pagination page
220max_comments_per_page = 500
221
222# Max number of issue starrers to notify via email. Issues with more
223# that this many starrers will only notify the last N of them after a
224# comment from a project member.
225max_starrers_to_notify = 4000
226
227# In projects that have more than this many issues the next and prev
228# links on the issue detail page will not be shown when the user comes
229# directly to an issue without specifying any query terms.
230threshold_to_suppress_prev_next = 10000
231
232# Format string for the name of the FTS index shards for issues.
233search_index_name_format = 'issues%02d'
234
235# Name of the FTS index for projects (not sharded).
236project_search_index_name = 'projects'
237
238# Each backend has this many seconds to respond, otherwise frontend gives up
239# on that shard.
240backend_deadline = 45
241
242# If the initial call to a backend fails, try again this many times.
243# Initial backend calls are failfast, meaning that they fail immediately rather
244# than queue behind other requests. The last 2 retries will wait in queue.
245backend_retries = 3
246
247# Do various extra logging at INFO level.
248enable_profiler_logging = True
249
250# Mail sending domain. Normally set this to None and it will be computed
251# automatically from your AppEngine APP_ID. But, it can be overridden below.
252mail_domain = None
253
254# URL format to browse source code revisions. This can be overridden
255# in specific projects by setting project.revision_url_format.
256# The format string may include "{revnum}" for the revision number.
257revision_url_format = 'https://crrev.com/{revnum}'
258
259# Users with emails in the "priviledged" domains do NOT get any advantage
260# but they do default their preference to show unobscured email addresses.
261priviledged_user_domains = [
Adrià Vilanova Martínez515639b2021-07-06 16:43:59 +0200262 'avm99963.com',
Copybara854996b2021-09-07 19:36:02 +0000263 ]
264
265# Branded domains: Any UI GET to a project listed below on prod or staging
266# should have the specified host, otherwise it will be redirected such that
267# the specified host is used.
268branded_domains = {} # defaults to empty for localhost
Adrià Vilanova Martínez097a8242024-01-26 21:20:10 +0100269branded_domains_staging = {} # now staging is used for the local server
Copybara854996b2021-09-07 19:36:02 +0000270branded_domains_prod = {
Adrià Vilanova Martínez515639b2021-07-06 16:43:59 +0200271 '*': 'bugs.avm99963.com',
Copybara854996b2021-09-07 19:36:02 +0000272}
273
274# The site home page will immediately redirect to a default project for these
275# domains, if the project can be viewed. Structure is {hostport: project_name}.
276domain_to_default_project = {} # defaults to empty for localhost
Adrià Vilanova Martínez097a8242024-01-26 21:20:10 +0100277domain_to_default_project_staging = {} # now staging is used for the local server
Adrià Vilanova Martínez515639b2021-07-06 16:43:59 +0200278domain_to_default_project_prod = {}
Copybara854996b2021-09-07 19:36:02 +0000279
280
281# Names of projects on code.google.com which we allow cross-linking to.
282recognized_codesite_projects = [
Copybara854996b2021-09-07 19:36:02 +0000283]
284
285####
286# Part 5: Instance-specific settings that override lines above.
287# This ID is for -staging and other misc deployments. Prod is defined below.
Adrià Vilanova Martínezf19ea432024-01-23 20:20:52 +0100288
289# IDs of the project for which label freezing should happen
290label_freeze_project_ids = set()
Adrià Vilanova Martínez515639b2021-07-06 16:43:59 +0200291analytics_id = ''
Copybara854996b2021-09-07 19:36:02 +0000292
Adrià Vilanova Martínezf19ea432024-01-23 20:20:52 +0100293# Project IDs which have opted into freezing project configs.
294config_freeze_project_ids = set()
295
Copybara854996b2021-09-07 19:36:02 +0000296if unit_test_mode:
297 db_cloud_project = '' # No real database is used during unit testing.
298 app_id = ''
299else:
300 app_id = app_identity.get_application_id()
301
Adrià Vilanova Martínez515639b2021-07-06 16:43:59 +0200302 if app_id == 'avm99963-bugs':
303 send_all_email_to = None # Deliver it to the intended users.
Copybara854996b2021-09-07 19:36:02 +0000304 # The Google Cloud SQL databases to use.
305 db_cloud_project = app_id
Adrià Vilanova Martínez515639b2021-07-06 16:43:59 +0200306 analytics_id = ''
307 branded_domains = branded_domains_prod
308 domain_to_default_project = domain_to_default_project_prod
Adrià Vilanova Martínezde942802022-07-15 14:06:55 +0200309
Adrià Vilanova Martínezf19ea432024-01-23 20:20:52 +0100310 label_freeze_project_ids = {}
311 config_freeze_project_ids = {}
312 config_freeze_override_users = {}
313
Adrià Vilanova Martínezcab9d512021-07-10 01:50:12 +0200314 elif app_id == 'monorail-staging':
315 site_name = 'Monorail Staging'
316 banner_message = 'This staging site does not send emails.'
317 # The Google Cloud SQL databases to use.
318 db_cloud_project = app_id
Adrià Vilanova Martínezde942802022-07-15 14:06:55 +0200319 branded_domains = branded_domains_staging
320 domain_to_default_project = domain_to_default_project_staging
Adrià Vilanova Martínezcab9d512021-07-10 01:50:12 +0200321
Adrià Vilanova Martínezf19ea432024-01-23 20:20:52 +0100322 label_freeze_project_ids = {16}
323 config_freeze_project_ids = {16}
324 config_freeze_override_users = {
325 16:
326 {
327 'benhenry@google.com', 'zhangtiff@google.com',
328 'summermcdonald@google.com', 'example@example.com'
329 }
330 }
331
Adrià Vilanova Martínezcab9d512021-07-10 01:50:12 +0200332 elif app_id == 'monorail-dev':
333 site_name = 'Monorail Dev'
334 banner_message = 'This dev site does not send emails.'
335 # The Google Cloud SQL databases to use.
336 db_cloud_project = app_id
337 branded_domains = branded_domains
338 domain_to_default_project = domain_to_default_project
Adrià Vilanova Martínezcab9d512021-07-10 01:50:12 +0200339 # Use replicas created when testing the restore procedures on 2021-02-24
340 db_replica_prefix = 'replica-2'
Copybara854996b2021-09-07 19:36:02 +0000341
Adrià Vilanova Martínezf19ea432024-01-23 20:20:52 +0100342 label_freeze_project_ids = {16, 36}
343 config_freeze_project_ids = {16, 36}
344 config_freeze_override_users = {
345 16:
346 {
347 'benhenry@google.com', 'zhangtiff@google.com',
348 'summermcdonald@google.com', 'example@example.com'
349 },
350 36: {'viccontreras@google.com', 'nmulcahey@google.com'}
351 }
352
Copybara854996b2021-09-07 19:36:02 +0000353if local_mode:
354 site_name = 'Monorail Local'
355 num_logical_shards = 10
Copybara854996b2021-09-07 19:36:02 +0000356 # Run cloud tasks emulator at port 9090
357 CLOUD_TASKS_EMULATOR_ADDRESS = '127.0.0.1:9090'
Adrià Vilanova Martínezcab9d512021-07-10 01:50:12 +0200358 CLOUD_TASKS_REGION = 'us-central1'
Copybara854996b2021-09-07 19:36:02 +0000359
360# Combine the customized info above to make the name of the primary DB instance.
361db_instance = db_cloud_project + ':' + db_region + ':' + db_primary_name
362
363# Combine the customized info above to make the names of the replica DB
364# instances.
Adrià Vilanova Martínez515639b2021-07-06 16:43:59 +0200365db_replica_names = [db_primary_name for i in range(num_logical_shards)]
Copybara854996b2021-09-07 19:36:02 +0000366
367# Format string for the name of the physical database replicas.
368physical_db_name_format = (db_cloud_project + ':' + db_region + ':%s')
369
370# preferred domains to display
371preferred_domains = {
Adrià Vilanova Martínez515639b2021-07-06 16:43:59 +0200372 'avm99963-bugs.appspot.com': 'bugs.avm99963.com'}
Copybara854996b2021-09-07 19:36:02 +0000373
374# Borg robot service account
Adrià Vilanova Martínez515639b2021-07-06 16:43:59 +0200375borg_service_account = 'chrome-infra-prod-borg-NOTUSEDBYAVM99963BUGS@system.gserviceaccount.com'
Copybara854996b2021-09-07 19:36:02 +0000376
377# Prediction API params.
378classifier_project_id = 'project-id-testing-only'
379
380# Necessary for tests.
Adrià Vilanova Martínezf19ea432024-01-23 20:20:52 +0100381if six.PY2 and 'APPLICATION_ID' not in os.environ:
Copybara854996b2021-09-07 19:36:02 +0000382 os.environ['APPLICATION_ID'] = 'testing-app'
383
384if local_mode:
385 # There is no local stub for ML Engine.
386 classifier_project_id = 'monorail-staging'
387else:
388 classifier_project_id = app_identity.get_application_id()
389
390classifier_model_id = '20170302'
391
392# Number of distinct users who have to flag an issue before it
393# is automatically removed as spam.
394# Currently effectively disabled.
395spam_flag_thresh = 1000
396
397# If the classifier's confidence is less than this value, the
398# item will show up in the spam moderation queue for manual
399# review.
400classifier_moderation_thresh = 1.0
401
402# If the classifier's confidence is greater than this value,
403# and the label is 'spam', the item will automatically be created
404# with is_spam=True, and will be filtered out from search results.
405classifier_spam_thresh = 0.995
406
407# Users with email addresses ending with these will not be subject to
408# spam filtering.
409spam_allowlisted_suffixes = (
410 '@chromium.org',
411 '.gserviceaccount.com',
412 '@google.com',
413 '@webrtc.org',
Adrià Vilanova Martínez515639b2021-07-06 16:43:59 +0200414 '@avm99963.com',
Copybara854996b2021-09-07 19:36:02 +0000415)
416
417# New issues filed by these users in these groups
418# automatically get the Restrict-View-Google label.
Adrià Vilanova Martínez515639b2021-07-06 16:43:59 +0200419restrict_new_issues_user_groups = []
Copybara854996b2021-09-07 19:36:02 +0000420
421# Users in these groups see a "corp mode" warning dialog when commenting
422# on public issues, informing them that their comments are public by default.
Adrià Vilanova Martínez515639b2021-07-06 16:43:59 +0200423public_issue_notice_user_groups = []
Copybara854996b2021-09-07 19:36:02 +0000424
Adrià Vilanova Martínez515639b2021-07-06 16:43:59 +0200425full_emails_perm_groups = []
Copybara854996b2021-09-07 19:36:02 +0000426
427# These email suffixes are allowed to create new alert bugs via email.
Adrià Vilanova Martínez515639b2021-07-06 16:43:59 +0200428alert_allowlisted_suffixes = ('@avm99963.com',)
Copybara854996b2021-09-07 19:36:02 +0000429
430# The person who is notified if there is an unexpected problem in the alert
431# pipeline.
Adrià Vilanova Martínez515639b2021-07-06 16:43:59 +0200432alert_escalation_email = 'me@avm99963.com'
Copybara854996b2021-09-07 19:36:02 +0000433
434# Bugs autogenerated from alert emails are created through this account.
Adrià Vilanova Martínez515639b2021-07-06 16:43:59 +0200435alert_service_account = 'autogenerated-bug-from-alert-mails-monorail@noreply.avm99963.com'
Copybara854996b2021-09-07 19:36:02 +0000436
437# The number of hash buckets to use when vectorizing text from Issues and
438# Comments. This should be the same value that the model was trained with.
439spam_feature_hashes = 500
440
441# The number of features to use when vectorizing text from Issues and
442# Comments. This should be the same value that the model was trained with.
443component_features = 5000
444
445# The name of the spam model in ML Engine.
446spam_model_name = 'spam_only_words'
447
Copybara854996b2021-09-07 19:36:02 +0000448ratelimiting_enabled = True
449
450# Requests that hit ratelimiting_cost_thresh_sec get one extra count
451# added to their bucket at the end of the request for each additional
452# multiple of this latency.
453ratelimiting_ms_per_count = 1000
454
455api_ratelimiting_enabled = True
456
457# When we post an auto-ping comment, it is posted by this user @ the preferred
458# domain name. E.g., 'monorail@bugs.chromium.org'.
459date_action_ping_author = 'monorail'
460
Adrià Vilanova Martínezf19ea432024-01-23 20:20:52 +0100461# Hard-coding this so that we don't rely on sys.maxsize, which could
Copybara854996b2021-09-07 19:36:02 +0000462# potentially differ. It is equal to the maximum unsigned 32 bit integer,
463# because the `int(10) unsigned` column type in MySQL is 32 bits.
464maximum_snapshot_period_end = 4294967295
465
466# The maximum number of rows chart queries can scan.
467chart_query_max_rows = 10000
468
469# Client ID to use for loading the Google API client, gapi.js.
Adrià Vilanova Martínez515639b2021-07-06 16:43:59 +0200470# (This is not used by avm99963 bugs, this is only useful for buganizer bugs)
471gapi_client_id = ''
Copybara854996b2021-09-07 19:36:02 +0000472
473# The pub/sub topic on which to publish issue update messages.
474if local_mode:
475 # In local dev, send issue updates to the monorail-dev project.
476 # There also exists a pubsub emulator we could potentially use in the future:
477 # https://cloud.google.com/pubsub/docs/emulator
478 pubsub_project = 'monorail-dev'
479else:
480 pubsub_project = app_identity.get_application_id()
481
482pubsub_topic_id = 'projects/%s/topics/issue-updates' % pubsub_project
483
484# All users in the following domains will have API access.
485# Important: the @ symbol must be included.
Adrià Vilanova Martínez96deb382021-08-08 00:13:47 +0200486api_allowed_email_domains = ('@avm99963.com', '@avm99963-bugs.iam.gserviceaccount.com')
Adrià Vilanova Martínezf19ea432024-01-23 20:20:52 +0100487
488label_prefix_allowlist = [
489 'CVE-',
490 'reward_to-',
491 'merge-merge-',
492 'migrated-to-b-',
493 'copybara-migration-complete-',
494 'cob-migrated-to-b-',
495 'incident-id-',
496 'version-',
497 'copybara-migrate-c-',
498 'reward-',
499 'b-',
500]
501
502
503def is_label_allowed(project_id, label):
504 # Only allowlist label prefixes for 'Chromium' project.
505 if project_id == 16:
506 return any(label.startswith(prefix) for prefix in label_prefix_allowlist)
507
508
509# This list should stay in sync with MIGRATED_BUGANIZER_ISSUE_PREFIXES in
510# `appengine/monorail/static_src/reducers/issueV0.js`.
511migrated_buganizer_issue_prefixes = [
512 'migrated-to-b-',
513 'copybara-migration-complete-',
514 'cob-migrated-to-b-',
515]