Chromium Code Reviews| Index: scripts/slave/recipe_modules/service_account/api.py |
| diff --git a/scripts/slave/recipe_modules/service_account/api.py b/scripts/slave/recipe_modules/service_account/api.py |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..813f9ca00b394b0831d8464aec20d8c6eb5f611b |
| --- /dev/null |
| +++ b/scripts/slave/recipe_modules/service_account/api.py |
| @@ -0,0 +1,45 @@ |
| +# Copyright 2016 The Chromium Authors. All rights reserved. |
| +# Use of this source code is governed by a BSD-style license that can be |
| +# found in the LICENSE file. |
| + |
| +"""API for generating oauth2 tokens from locally stored secrets. |
| + |
| +This is a thin wrapper over the authutil go executable, which itself calls |
| +https://github.com/luci/luci-go/blob/master/client/authcli/authcli.go |
| +""" |
| + |
| +import os |
| + |
| +from recipe_engine import recipe_api |
| + |
| + |
| +class ServiceAccountApi(recipe_api.RecipeApi): |
| + |
| + def _config_defaults(self): |
| + if self.m.platform.is_win: |
| + self.set_config('service_account_windows') |
| + else: |
| + self.set_config('service_account_default') |
| + |
| + def get_token(self, account): |
| + if self.c is None: |
| + self._config_defaults() |
| + account_file = os.path.join(self.c.accounts_path, |
| + 'service-account-%s.json' % account) |
| + try: |
| + step_result = self.m.step('get access token', |
| + [self.c.authutil_path, 'token', |
| + '-service-account-json=' + account_file], |
| + stdout=self.m.raw_io.output()) |
| + except self.m.step.StepFailure: # pragma: no cover |
| + if not os.path.exists(self.c.authutil_path): |
| + print('The authutil binary was not found at the default locations, ' |
|
nodir
2016/05/06 20:32:09
recipe modules and recipes should no print directl
RobertoCN
2016/05/06 21:38:10
Done.
|
| + 'please set the AUTHUTILPATH environment to its path.\n\n' |
| + 'If running locally try: \n' |
| + '$ cd infra/go \n' |
| + '$ ./env.py go install infra/tools/authutil \n' |
| + '$ export AUTHUTILPATH=`pwd`/bin' |
| + ) % self.c.authutil_path |
| + raise |
| + |
| + return step_result.stdout.strip() |