6
6
"""
7
7
8
8
import logging
9
+ from typing import Dict
9
10
10
11
import requests
11
12
16
17
log = logging .getLogger (__name__ )
17
18
18
19
19
- def payload_for_changeset (changesetid , repo_url ) :
20
+ def payload_for_changeset (changesetid : str , repo_url : str ) -> Dict :
20
21
"""Build a telemetry.mozilla.org ping payload for the given changeset ID.
21
22
22
23
The payload conforms to https://github.com/mozilla-services/mozilla-pipeline-schemas/blob/dev/schemas/eng-workflow/hgpush/hgpush.1.schema.json
@@ -33,28 +34,31 @@ def payload_for_changeset(changesetid, repo_url):
33
34
NoSuchChangeset: the requested changeset ID does not exist in the given
34
35
mercurial repository.
35
36
"""
37
+ changeset = fetch_changeset (changesetid , repo_url )
38
+
39
+ reviewsystem = determine_review_system (changeset )
40
+ landingsystem = changeset .get ('landingsystem' )
41
+ utc_pushdate = utc_hgwebdate (changeset ['pushdate' ])
42
+
43
+ return {
44
+ 'changesetID' : changesetid ,
45
+ 'landingSystem' : landingsystem ,
46
+ 'reviewSystemUsed' : reviewsystem .value ,
47
+ 'repository' : repo_url ,
48
+ 'pushDate' : utc_pushdate ,
49
+ }
50
+
51
+
52
+ def fetch_changeset (changeset_id , repo_url ):
36
53
# Example URL: https://hg.mozilla.org/mozilla-central/json-rev/deafa2891c61
37
54
response = requests_retry_session (
38
55
).get (f'{ repo_url } /json-rev/{ changesetid } ' )
39
-
40
56
if response .status_code == 404 :
41
57
raise NoSuchChangeset (
42
58
f'The changeset { changesetid } does not exist in repository { repo_url } '
43
59
)
44
-
45
60
response .raise_for_status ()
46
- pushdata = response .json ()
47
-
48
- system = determine_review_system (pushdata )
49
-
50
- utc_pushdate = utc_hgwebdate (pushdata ['pushdate' ])
51
-
52
- return {
53
- 'changesetID' : changesetid ,
54
- 'reviewSystemUsed' : system .value ,
55
- 'repository' : repo_url ,
56
- 'pushDate' : utc_pushdate
57
- }
61
+ return response .json ()
58
62
59
63
60
64
def send_ping (ping_id , payload ):
0 commit comments