blob: d15dba55f3ace5b260c79869aa2cbd976c337d1b [file] [log] [blame] [edit]
"""Collection of utility functions for uploading CIPD packages.
Note: cipd is included in depot_tools. These utils assume depot_tools has been
included in $PATH.
"""
from __future__ import absolute_import
import logging
def UploadCIPDPackage(executor,
pkg_def,
pkg_vars=None,
refs=None,
tags=None,
verification_timeout=None,
service_account_json=None,
dry_run=False):
"""Uploads a new CIPD package, defined by pkg-def.
Args:
executor: Executes the subprocess.
pkg_def: Path to cipd pkg-def .yaml file.
pkg_vars: A dict of variables to pass to cipd with -pkg-var.
refs: A list of refs to be assigned to the uploaded cipd package.
tags: A dict of tags to be assigned to the uploaded cipd package.
verification_timeout: Time allotted for cipd verification step ('XXmXXs').
service_account_json: Path to service account JSON auth token.
dry_run: Boolean, if True skip actual upload.
Returns:
Tuple of (return code, full stdout output, full stderr output).
"""
pkg_vars = pkg_vars or {}
refs = refs or []
tags = tags or {}
cmd = [
'cipd', 'create',
'-pkg-def', pkg_def]
for key in pkg_vars.keys():
value = pkg_vars[key]
var = ':'.join([str(key), str(value)])
cmd += ['-pkg-var', var]
for ref in refs:
cmd += ['-ref', ref]
for key in tags.keys():
value = tags[key]
tag = ':'.join([str(key), str(value)])
cmd += ['-tag', tag]
if verification_timeout:
cmd += ['-verification-timeout', verification_timeout]
if service_account_json:
cmd += ['-service-account-json', service_account_json]
if dry_run:
logging.info('CIPD upload command: %s', cmd)
cmd = ['echo'] + cmd
return executor.exec_subprocess(cmd)