Skip to content

Commit 0c3d15b

Browse files
authored
Migrated CRON handlers to flask. (google#1976)
1 parent b6ed4bf commit 0c3d15b

36 files changed

+219
-203
lines changed

src/appengine/handlers/cron/backup.py

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,8 @@
2424

2525
from base import utils
2626
from config import local_config
27-
from handlers import base_handler
28-
from libs import handler
27+
from handlers import base_handler_flask
28+
from libs import handler_flask
2929
from metrics import logs
3030

3131
# CrashStatistic is excluded because the number of records is too high and
@@ -38,17 +38,17 @@ def _datastore_client():
3838
return googleapiclient.discovery.build('datastore', 'v1')
3939

4040

41-
class Handler(base_handler.Handler):
41+
class Handler(base_handler_flask.Handler):
4242
"""Handler for triggering the backup URL."""
4343

44-
@handler.check_cron()
44+
@handler_flask.cron()
4545
def get(self):
4646
"""Handle a cron job."""
4747
backup_bucket = local_config.Config(
4848
local_config.PROJECT_PATH).get('backup.bucket')
4949
if not backup_bucket:
5050
logs.log('No backup bucket is set, skipping.')
51-
return
51+
return 'OK'
5252

5353
kinds = [
5454
kind for kind in ndb.Model._kind_map # pylint: disable=protected-access
@@ -80,6 +80,4 @@ def get(self):
8080
status_code = e.resp.status
8181
logs.log_error(message, error=str(e))
8282

83-
self.response.headers['Content-Type'] = 'text/plain'
84-
self.response.out.write(message)
85-
self.response.set_status(status_code)
83+
return (message, status_code, {'Content-Type': 'text/plain'})

src/appengine/handlers/cron/batch_fuzzer_jobs.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@
1414
"""A cron handler that batches FuzzerJobs."""
1515

1616
from datastore import data_types
17-
from handlers import base_handler
18-
from libs import handler
17+
from handlers import base_handler_flask
18+
from libs import handler_flask
1919

2020
from google.cloud import ndb
2121

@@ -56,10 +56,10 @@ def batch_fuzzer_jobs():
5656
ndb.delete_multi(batches_to_remove)
5757

5858

59-
class Handler(base_handler.Handler):
59+
class Handler(base_handler_flask.Handler):
6060
"""Handler for building data_types.CrashsStats2."""
6161

62-
@handler.check_cron()
62+
@handler_flask.cron()
6363
def get(self):
6464
"""Process a GET request from a cronjob."""
6565
batch_fuzzer_jobs()

src/appengine/handlers/cron/build_crash_stats.py

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,8 @@
3434
from base import utils
3535
from datastore import data_types
3636
from google_cloud_utils import big_query
37-
from handlers import base_handler
38-
from libs import handler
37+
from handlers import base_handler_flask
38+
from libs import handler_flask
3939
from metrics import crash_stats
4040

4141
# After insertion, it takes a few seconds for a record to show up.
@@ -174,14 +174,11 @@ def build_if_needed():
174174
logging.info("Skip building crash stats because it's too early.")
175175

176176

177-
class Handler(base_handler.Handler):
177+
class Handler(base_handler_flask.Handler):
178178
"""Handler for building data_types.CrashsStats2."""
179179

180-
@handler.check_cron()
180+
@handler_flask.cron()
181181
def get(self):
182182
"""Process a GET request from a cronjob."""
183183
end_hour = build_if_needed()
184-
185-
self.response.headers['Content-Type'] = 'text/plain'
186-
self.response.out.write('OK (end_hour=%s)' % end_hour)
187-
self.response.set_status(200)
184+
return 'OK (end_hour=%s)' % end_hour

src/appengine/handlers/cron/cleanup.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,8 @@
3131
from datastore import data_types
3232
from datastore import ndb_utils
3333
from fuzzing import leak_blacklist
34-
from handlers import base_handler
35-
from libs import handler
34+
from handlers import base_handler_flask
35+
from libs import handler_flask
3636
from libs import mail
3737
from libs.issue_management import issue_filer
3838
from libs.issue_management import issue_tracker_policy
@@ -1239,10 +1239,10 @@ def cleanup_unused_heartbeats():
12391239
ndb_utils.delete_multi(unused_heartbeats)
12401240

12411241

1242-
class Handler(base_handler.Handler):
1242+
class Handler(base_handler_flask.Handler):
12431243
"""Cleanup."""
12441244

1245-
@handler.check_cron()
1245+
@handler_flask.cron()
12461246
def get(self):
12471247
cleanup_testcases_and_issues()
12481248
cleanup_reports_metadata()

src/appengine/handlers/cron/corpus_backup.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,8 @@
2222
from datastore import ndb_utils
2323
from fuzzing import corpus_manager
2424
from google_cloud_utils import storage
25-
from handlers import base_handler
26-
from libs import handler
25+
from handlers import base_handler_flask
26+
from libs import handler_flask
2727
from metrics import logs
2828

2929

@@ -74,10 +74,10 @@ def _make_corpus_backup_public(target, corpus_fuzzer_name_override,
7474
logs.log('Corpus backup %s is now marked public.' % corpus_backup_url)
7575

7676

77-
class MakePublicHandler(base_handler.Handler):
77+
class MakePublicHandler(base_handler_flask.Handler):
7878
"""Makes corpuses older than 90 days public."""
7979

80-
@handler.check_cron()
80+
@handler_flask.cron()
8181
def get(self):
8282
"""Handle a GET request."""
8383
jobs = ndb_utils.get_all_from_model(data_types.Job)

src/appengine/handlers/cron/fuzz_strategy_selection.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,8 @@
2727
from datastore import ndb_utils
2828
from fuzzing import strategy
2929
from google_cloud_utils import big_query
30-
from handlers import base_handler
31-
from libs import handler
30+
from handlers import base_handler_flask
31+
from libs import handler_flask
3232
from metrics import logs
3333

3434
# After experimentation with high, low, and medium temperature parameters, we
@@ -205,13 +205,13 @@ def _query_and_upload_strategy_probabilities(engine):
205205
engine.name))
206206

207207

208-
class Handler(base_handler.Handler):
208+
class Handler(base_handler_flask.Handler):
209209
"""Cron job handler for fuzz strategy selection.
210210
211211
Handler to periodically update fuzz strategy bandit probabilities
212212
based on a performance metric (currently based on new_edges)."""
213213

214-
@handler.check_cron()
214+
@handler_flask.cron()
215215
def get(self):
216216
"""Process all fuzz targets and update FuzzStrategy weights."""
217217
for engine in ENGINE_LIST:

src/appengine/handlers/cron/fuzzer_and_job_weights.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,8 @@
2424
from datastore import data_types
2525
from datastore import ndb_utils
2626
from google_cloud_utils import big_query
27-
from handlers import base_handler
28-
from libs import handler
27+
from handlers import base_handler_flask
28+
from libs import handler_flask
2929
from metrics import fuzzer_stats
3030
from metrics import logs
3131
from system import environment
@@ -386,10 +386,10 @@ def update_job_weights():
386386
update_job_weight(job.name, multiplier)
387387

388388

389-
class Handler(base_handler.Handler):
389+
class Handler(base_handler_flask.Handler):
390390
"""Handler to periodically update fuzz target weights based on performance."""
391391

392-
@handler.check_cron()
392+
@handler_flask.cron()
393393
def get(self):
394394
"""Process all fuzz targets and update FuzzTargetJob weights."""
395395
client = big_query.Client()

src/appengine/handlers/cron/fuzzer_coverage.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,8 @@
2323
from datastore import data_types
2424
from datastore import ndb_utils
2525
from google_cloud_utils import storage
26-
from handlers import base_handler
27-
from libs import handler
26+
from handlers import base_handler_flask
27+
from libs import handler_flask
2828
from metrics import logs
2929

3030

@@ -134,10 +134,10 @@ def collect_fuzzer_coverage(bucket):
134134
_process_project(project, bucket)
135135

136136

137-
class Handler(base_handler.Handler):
137+
class Handler(base_handler_flask.Handler):
138138
"""Collects the latest code coverage stats and links to reports."""
139139

140-
@handler.check_cron()
140+
@handler_flask.cron()
141141
def get(self):
142142
"""Handle a GET request."""
143143
# The task is supposed to be super reliable and never fail. If anything goes

src/appengine/handlers/cron/load_bigquery_stats.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,8 @@
2424
from base import utils
2525
from datastore import data_types
2626
from google_cloud_utils import big_query
27-
from handlers import base_handler
28-
from libs import handler
27+
from handlers import base_handler_flask
28+
from libs import handler_flask
2929
from metrics import fuzzer_stats
3030
from metrics import fuzzer_stats_schema
3131
from metrics import logs
@@ -36,7 +36,7 @@
3636
RETRY_SLEEP_TIME = 5
3737

3838

39-
class Handler(base_handler.Handler):
39+
class Handler(base_handler_flask.Handler):
4040
"""Cron handler for loading bigquery stats."""
4141

4242
def _utc_now(self):
@@ -150,7 +150,7 @@ def _load_data(self, bigquery, fuzzer):
150150
# See https://cloud.google.com/bigquery/docs/reference/rest/v2/jobs/query.
151151
logs.log('Response from BigQuery: %s' % response)
152152

153-
@handler.check_cron()
153+
@handler_flask.cron()
154154
def get(self):
155155
"""Load bigquery stats from GCS."""
156156
if not big_query.get_bucket():

src/appengine/handlers/cron/manage_vms.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,9 @@
3333
from datastore import data_types
3434
from datastore import ndb_utils
3535
from google_cloud_utils import compute_engine_projects
36-
from handlers import base_handler
36+
from handlers import base_handler_flask
3737
from handlers.cron.helpers import bot_manager
38-
from libs import handler
38+
from libs import handler_flask
3939

4040
PROJECT_MIN_CPUS = 1
4141

@@ -698,10 +698,10 @@ def assign_hosts_to_workers(self):
698698
self.cleanup_old_assignments(all_host_names)
699699

700700

701-
class Handler(base_handler.Handler):
701+
class Handler(base_handler_flask.Handler):
702702
"""CPU distributor for OSS-Fuzz projects."""
703703

704-
@handler.check_cron()
704+
@handler_flask.cron()
705705
def get(self):
706706
"""Handle a get request."""
707707
if utils.is_oss_fuzz():

0 commit comments

Comments
 (0)