mirror of
https://github.com/GAM-team/GAM.git
synced 2026-06-28 18:01:36 +00:00
allow Chrome pinning to relative version like 'stable-1'
This commit is contained in:
@@ -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('_', '')
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user