blob: c6930c188fd433e4318c5ac088e7031f1c4e7335 [file] [log] [blame]
#!/usr/bin/env python
# Copyright 2021 The Cobalt Authors. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
"""Posts an Evergreen update check against Omaha backends."""
import argparse
import sys
import requests
import json
from starboard.sabi import generate_sabi_id
# The Evergreen application ID on Omaha.
_APP_ID = '{6D4E53F3-CC64-4CB8-B6BD-AB0B8F300E1C}'
# The production Omaha endpoint.
_ENDPOINT = 'https://tools.google.com/service/update2/json'
# The qa Omaha endpoint.
_ENDPOINT_QA = 'https://omaha-qa.sandbox.google.com/service/update2/json'
_HEADERS = {'Content-type': 'application/json'}
# A minified Evergreen update request that would be POST'd to an Omaha backend.
_REQUEST = {
'request': {
'@os': 'starboard',
'@updater': 'cobalt',
'acceptformat': 'crx2,crx3',
'app': [{
'appid': _APP_ID,
'enabled': True,
'ping': {
'r': -2
},
'updatecheck': {},
}],
'arch': '',
'dedup': 'cr',
'hw': {},
'jsengine': 'v8/8.8.278.8-jit',
'lang': 'en_US',
'manufacturer': '',
'nacl_arch': '',
'os': {
'arch': '',
'platform': ''
},
'prodchannel': 'qa',
'prodversion': '21',
'protocol': '3.1',
'requestid': '',
'sessionid': '',
'uastring': '',
}
}
def main():
arg_parser = argparse.ArgumentParser()
arg_parser.add_argument(
'-b',
'--brand',
default='',
help='Which brand to use.',
)
arg_parser.add_argument(
'-c',
'--channel',
default='qa',
help='Which channel to use.',
)
arg_parser.add_argument(
'-d',
'--channel_changed',
action='store_true',
default=False,
help='Whether this is a request from changing channels.',
)
arg_parser.add_argument(
'-i',
'--chipset',
default='',
help='Which device chipset to use.',
)
arg_parser.add_argument(
'-m',
'--model',
default='',
help='Which device model to use.',
)
arg_parser.add_argument(
'-p',
'--print_request',
action='store_true',
default=False,
help='Print the request sent to Omaha, including the server used.',
)
arg_parser.add_argument(
'-q',
'--qa',
action='store_true',
default=False,
help='Whether to use the Omaha QA backend.',
)
arg_parser.add_argument(
'-r',
'--firmware',
default='',
help='Which device firmware to use.',
)
arg_parser.add_argument(
'-s',
'--sbversion',
default='12',
help='Which Starboard API version to use.',
)
arg_parser.add_argument(
'-u',
'--updater_version',
default='21',
help='Which Cobalt (updater) version to use. e.g. 21, 22',
)
arg_parser.add_argument(
'-v',
'--version',
default='1.0.0',
help='Which Evergreen version to use.',
)
arg_parser.add_argument(
'-y',
'--year',
default='2022',
help='Which device year to use.',
)
args, _ = arg_parser.parse_known_args()
_REQUEST['request']['SABI'] = generate_sabi_id.DoMain()
_REQUEST['request']['brand'] = args.brand
_REQUEST['request']['chipset'] = args.chipset
_REQUEST['request']['firmware'] = args.firmware
_REQUEST['request']['model'] = args.model
_REQUEST['request']['updaterchannel'] = args.channel
_REQUEST['request']['updaterchannelchanged'] = args.channel_changed
_REQUEST['request']['sbversion'] = args.sbversion
_REQUEST['request']['updaterversion'] = args.updater_version
_REQUEST['request']['year'] = args.year
_REQUEST['request']['app'][0]['version'] = args.version
if args.print_request:
print(f'Querying server: {_ENDPOINT_QA if args.qa else _ENDPOINT}')
print(f'Sending request: {json.dumps(_REQUEST)}')
print(
requests.post(
_ENDPOINT_QA if args.qa else _ENDPOINT,
data=json.dumps(_REQUEST),
headers=_HEADERS,
timeout=60).text)
return 0
if __name__ == '__main__':
sys.exit(main())