forked from mirrors/gecko-dev
		
	
		
			
				
	
	
		
			45 lines
		
	
	
	
		
			1.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			45 lines
		
	
	
	
		
			1.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| # This Source Code Form is subject to the terms of the Mozilla Public
 | |
| # License, v. 2.0. If a copy of the MPL was not distributed with this
 | |
| # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 | |
| """
 | |
| This transform enables coalescing for tasks with scm level > 1, by defining
 | |
| values for the coalesce settings of the job.
 | |
| """
 | |
| 
 | |
| from __future__ import absolute_import
 | |
| 
 | |
| from taskgraph.transforms.base import TransformSequence
 | |
| from hashlib import sha256
 | |
| 
 | |
| transforms = TransformSequence()
 | |
| 
 | |
| 
 | |
| @transforms.add
 | |
| def enable_coalescing(config, jobs):
 | |
|     """
 | |
|     This transform enables coalescing for tasks with scm level > 1, setting the
 | |
|     name to be equal to the the first 20 chars of the sha256 of the task name
 | |
|     (label). The hashing is simply used to keep the name short, unique, and
 | |
|     alphanumeric, since it is used in AMQP routing keys.
 | |
| 
 | |
|     Note, the coalescing keys themselves are not intended to be readable
 | |
|     strings or embed information. The tasks they represent contain all relevant
 | |
|     metadata.
 | |
|     """
 | |
|     for job in jobs:
 | |
|         if int(config.params['level']) > 1 and job['worker-type'] not in [
 | |
|             # These worker types don't currently support coalescing.
 | |
|             # This list can be removed when bug 1399401 is fixed:
 | |
|             #   https://bugzilla.mozilla.org/show_bug.cgi?id=1399401
 | |
|             'aws-provisioner-v1/gecko-t-win7-32',
 | |
|             'aws-provisioner-v1/gecko-t-win7-32-gpu',
 | |
|             'aws-provisioner-v1/gecko-t-win10-64',
 | |
|             'aws-provisioner-v1/gecko-t-win10-64-gpu',
 | |
|             'releng-hardware/gecko-t-win10-64-hw',
 | |
|         ]:
 | |
|             job['coalesce'] = {
 | |
|                 'job-identifier': sha256(job["label"]).hexdigest()[:20],
 | |
|                 'age': 3600,
 | |
|                 'size': 5,
 | |
|             }
 | |
|         yield job
 | 
