@ -214,6 +214,16 @@ def add_git_similarity(parser):
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				  parser . parse_args  =  Parse 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				def  _get_properties_from_options ( options ) : 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				  properties  =  dict ( x . split ( ' = ' ,  1 )  for  x  in  options . properties ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				  for  key ,  val  in  properties . iteritems ( ) : 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    try : 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				      properties [ key ]  =  json . loads ( val ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    except  ValueError : 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				      pass   # If a value couldn't be evaluated, treat it as a string. 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				  return  properties 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				def  _prefix_master ( master ) : 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				  """ Convert user-specified master name to full master name. 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
			
			 
			 
			
				@ -228,8 +238,7 @@ def _prefix_master(master):
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				  return  ' %s %s '  %  ( prefix ,  master ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				def  trigger_try_jobs ( auth_config ,  changelist ,  options ,  masters ,  category , 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                     override_properties = None ) : 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				def  trigger_try_jobs ( auth_config ,  changelist ,  options ,  masters ,  category ) : 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				  rietveld_url  =  settings . GetDefaultServerUrl ( ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				  rietveld_host  =  urlparse . urlparse ( rietveld_url ) . hostname 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				  authenticator  =  auth . get_authenticator_for_host ( rietveld_host ,  auth_config ) 
 
			
		 
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
			
			 
			 
			
				@ -238,6 +247,7 @@ def trigger_try_jobs(auth_config, changelist, options, masters, category,
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				  issue_props  =  changelist . GetIssueProperties ( ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				  issue  =  changelist . GetIssue ( ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				  patchset  =  changelist . GetMostRecentPatchset ( ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				  properties  =  _get_properties_from_options ( options ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				  buildbucket_put_url  =  ( 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				      ' https:// {hostname} /_ah/api/buildbucket/v1/builds/batch ' . format ( 
 
			
		 
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
			
			 
			 
			
				@ -273,8 +283,8 @@ def trigger_try_jobs(auth_config, changelist, options, masters, category,
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				              ' testfilter ' :  tests , 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				          } , 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				      } 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				      if  override_ properties: 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        parameters [ ' properties ' ] . update ( override_ properties) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				      if   properties: 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        parameters [ ' properties ' ] . update (  properties) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				      if  options . clobber : 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        parameters [ ' properties ' ] [ ' clobber ' ]  =  True 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				      batch_req_body [ ' builds ' ] . append ( 
 
			
		 
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
			
			 
			 
			
				@ -3072,6 +3082,11 @@ def CMDtry(parser, args):
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				      " --project " , 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				      help = " Override which project to use. Projects are defined  " 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				           " server-side to define what default bot set to use " ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				  group . add_option ( 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				      " -p " ,  " --property " ,  dest = " properties " ,  action = " append " ,  default = [ ] , 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				      help = " Specify generic properties in the form -p key1=value1 -p  " 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				           " key2=value2 etc (buildbucket only). The value will be treated as  " 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				           " json if decodable, or as string otherwise. " ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				  group . add_option ( 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				      " -n " ,  " --name " ,  help = " Try job name; default to current branch name " ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				  group . add_option ( 
 
			
		 
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
			
			 
			 
			
				@ -3085,6 +3100,14 @@ def CMDtry(parser, args):
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				  options ,  args  =  parser . parse_args ( args ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				  auth_config  =  auth . extract_auth_config_from_options ( options ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				  if  options . use_rietveld  and  options . properties : 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    parser . error ( ' Properties can only be specified with buildbucket ' ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				  # Make sure that all properties are prop=value pairs. 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				  bad_params  =  [ x  for  x  in  options . properties  if  ' = '  not  in  x ] 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				  if  bad_params : 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    parser . error ( ' Got properties with missing  " = " :  %s '  %  bad_params ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				  if  args : 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    parser . error ( ' Unknown arguments:  %s '  %  args )