allow Chrome pinning to relative version like 'stable-1'

This commit is contained in:
Jay Lee
2021-04-06 16:35:34 -04:00
parent 1b1a0c876c
commit 6999c13877
2 changed files with 35 additions and 0 deletions

View File

@@ -20,6 +20,7 @@ CHROME_HISTORY_ENTITY_CHOICES = {
'versions',
'releases',
}
CHROME_PLATFORM_CHOICE_MAP = {
'all': 'all',
'android': 'android',
@@ -32,6 +33,7 @@ CHROME_PLATFORM_CHOICE_MAP = {
'win': 'win',
'win64': 'win64',
}
CHROME_CHANNEL_CHOICE_MAP = {
'beta': 'beta',
'canary': 'canary',
@@ -39,6 +41,7 @@ CHROME_CHANNEL_CHOICE_MAP = {
'dev': 'dev',
'stable': 'stable',
}
CHROME_VERSIONHISTORY_ORDERBY_CHOICE_MAP = {
'versions': {
'channel': 'channel',
@@ -56,6 +59,7 @@ CHROME_VERSIONHISTORY_ORDERBY_CHOICE_MAP = {
'version': 'version'
}
}
CHROME_VERSIONHISTORY_TITLES = {
'platforms': ['name', 'platformType'],
'channels': ['name', 'channelType'],
@@ -63,6 +67,30 @@ CHROME_VERSIONHISTORY_TITLES = {
'releases': ['name', 'version', 'fraction', 'serving.startTime', 'serving.endTime']
}
def get_relative_milestone(channel='stable', minus=0):
''' takes a channel and minus_versions like stable and -1. returns current given milestone number '''
cv = build()
svc = cv.platforms().channels().versions().releases()
parent = f'chrome/platforms/all/channels/{channel}/versions/all'
releases = gapi.get_all_pages(cv.platforms().channels().versions().releases(),
'list',
'releases',
parent=parent,
fields='releases/version,nextPageToken')
milestones = []
# Note that milestones are usually sequential but some numbers
# may be skipped. For example, there was no Chrome 82 stable.
# Thus we need to do more than find the latest version and subtract.
for release in releases:
milestone = release.get('version').split('.')[0]
if milestone not in milestones:
milestones.append(milestone)
milestones.sort(reverse=True)
try:
return milestones[minus]
except IndexError:
return ''
def printHistory():
cv = build()
entityType = sys.argv[3].lower().replace('_', '')

View File

@@ -9,6 +9,7 @@ from gam.var import GC_CUSTOMER_ID, GC_Values, MY_CUSTOMER
from gam import controlflow
from gam import gapi
from gam.gapi import errors as gapi_errors
from gam.gapi import chromehistory as gapi_chromehistory
from gam.gapi.directory import orgunits as gapi_directory_orgunits
from gam import utils
@@ -298,6 +299,12 @@ def update_policy():
value = f'{prefix}{value}'
elif vtype in ['TYPE_LIST']:
value = value.split(',')
if myarg == 'chrome.users.chromebrowserupdates' and \
cased_field == 'targetVersionPrefixSetting':
if value.find('-') != -1:
channel, minus = value.split('-')
milestone = gapi_chromehistory.get_relative_milestone(channel, int(minus))
value = f'{milestone}.'
body['requests'][-1]['policyValue']['value'][cased_field] = value
body['requests'][-1]['updateMask'] += f'{cased_field},'
i += 2