Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(496)

Side by Side Diff: recipe_engine/fetch.py

Issue 2771723006: [recipes.cfg] ONLY support jsonpb. (Closed)
Patch Set: remove comment Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « doc/recipes.py ('k') | recipe_engine/package.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # Copyright 2016 The LUCI Authors. All rights reserved. 1 # Copyright 2016 The LUCI Authors. All rights reserved.
2 # Use of this source code is governed under the Apache License, Version 2.0 2 # Use of this source code is governed under the Apache License, Version 2.0
3 # that can be found in the LICENSE file. 3 # that can be found in the LICENSE file.
4 4
5 import base64 5 import base64
6 import httplib 6 import httplib
7 import json 7 import json
8 import logging 8 import logging
9 import os 9 import os
10 import re 10 import re
11 import shutil 11 import shutil
12 import sys 12 import sys
13 import tarfile 13 import tarfile
14 import tempfile 14 import tempfile
15 15
16 # Add third party paths. 16 # Add third party paths.
17 from . import env 17 from . import env
18 from . import requests_ssl 18 from . import requests_ssl
19 from . import util 19 from . import util
20 from . import types 20 from . import types
21 from .requests_ssl import requests 21 from .requests_ssl import requests
22 22
23 import subprocess42 23 import subprocess42
24 from google.protobuf import text_format 24 from google.protobuf import json_format
25 25
26 from . import package_pb2 26 from . import package_pb2
27 27
28 28
29 class FetchError(Exception): 29 class FetchError(Exception):
30 pass 30 pass
31 31
32 32
33 class FetchNotAllowedError(FetchError): 33 class FetchNotAllowedError(FetchError):
34 pass 34 pass
(...skipping 218 matching lines...) Expand 10 before | Expand all | Expand 10 after
253 253
254 revision = self._resolve_revision(repo, revision) 254 revision = self._resolve_revision(repo, revision)
255 255
256 shutil.rmtree(checkout_dir, ignore_errors=True) 256 shutil.rmtree(checkout_dir, ignore_errors=True)
257 257
258 recipes_cfg_url = '%s/+/%s/infra/config/recipes.cfg?format=TEXT' % ( 258 recipes_cfg_url = '%s/+/%s/infra/config/recipes.cfg?format=TEXT' % (
259 repo, requests.utils.quote(revision)) 259 repo, requests.utils.quote(revision))
260 recipes_cfg_text = base64.b64decode( 260 recipes_cfg_text = base64.b64decode(
261 self._fetch_gitiles(recipes_cfg_url).text) 261 self._fetch_gitiles(recipes_cfg_url).text)
262 recipes_cfg_proto = package_pb2.Package() 262 recipes_cfg_proto = package_pb2.Package()
263 text_format.Merge(recipes_cfg_text, recipes_cfg_proto) 263 json_format.Parse(recipes_cfg_text, recipes_cfg_proto,
264 ignore_unknown_fields=True)
264 recipes_path_rel = recipes_cfg_proto.recipes_path 265 recipes_path_rel = recipes_cfg_proto.recipes_path
265 266
266 # Re-create recipes.cfg in |checkout_dir| so that the repo's recipes.py 267 # Re-create recipes.cfg in |checkout_dir| so that the repo's recipes.py
267 # can look it up. 268 # can look it up.
268 recipes_cfg_path = os.path.join( 269 recipes_cfg_path = os.path.join(
269 checkout_dir, 'infra', 'config', 'recipes.cfg') 270 checkout_dir, 'infra', 'config', 'recipes.cfg')
270 os.makedirs(os.path.dirname(recipes_cfg_path)) 271 os.makedirs(os.path.dirname(recipes_cfg_path))
271 with open(recipes_cfg_path, 'w') as f: 272 with open(recipes_cfg_path, 'w') as f:
272 f.write(recipes_cfg_text) 273 f.write(recipes_cfg_text)
273 274
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
358 logging.info('fetching %s', url) 359 logging.info('fetching %s', url)
359 360
360 resp = requests.get(url) 361 resp = requests.get(url)
361 if resp.status_code != httplib.OK: 362 if resp.status_code != httplib.OK:
362 raise GitilesFetchError(resp.status_code, resp.text) 363 raise GitilesFetchError(resp.status_code, resp.text)
363 364
364 if not resp.text.startswith(cls._GERRIT_XSRF_HEADER): 365 if not resp.text.startswith(cls._GERRIT_XSRF_HEADER):
365 raise GitilesFetchError(resp.status_code, 'Missing XSRF header') 366 raise GitilesFetchError(resp.status_code, 'Missing XSRF header')
366 367
367 return json.loads(resp.text[len(cls._GERRIT_XSRF_HEADER):]) 368 return json.loads(resp.text[len(cls._GERRIT_XSRF_HEADER):])
OLDNEW
« no previous file with comments | « doc/recipes.py ('k') | recipe_engine/package.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698