mirror of
				https://github.com/ansible-collections/community.general.git
				synced 2025-10-25 05:23:58 -07:00 
			
		
		
		
	fixed lookup search path (#16630)
* fixed lookup search path added ansible_search_path var that contains the proper list and in order removed roledir var which was only used by first_found, rest used role_path added needle function for lookups that mirrors the action plugin one, now both types of plugins use same pathing. * added missing os import * renamed as per feedback * fixed missing rename in first_found * also fixed first_found * fixed import to match new error class * fixed getattr ref
This commit is contained in:
		
					parent
					
						
							
								221520cbad
							
						
					
				
			
			
				commit
				
					
						3c39bb5633
					
				
			
		
					 11 changed files with 87 additions and 84 deletions
				
			
		|  | @ -83,12 +83,8 @@ class TaskExecutor: | |||
|         display.debug("in run()") | ||||
| 
 | ||||
|         try: | ||||
|             # lookup plugins need to know if this task is executing from | ||||
|             # a role, so that it can properly find files/templates/etc. | ||||
|             roledir = None | ||||
|             if self._task._role: | ||||
|                 roledir = self._task._role._role_path | ||||
|             self._job_vars['roledir'] = roledir | ||||
|             # get search path for this task to pass to lookup plugins | ||||
|             self._job_vars['ansible_search_path'] = self._task.get_search_path() | ||||
| 
 | ||||
|             items = self._get_loop_items() | ||||
|             if items is not None: | ||||
|  | @ -192,7 +188,18 @@ class TaskExecutor: | |||
|                     except AnsibleUndefinedVariable as e: | ||||
|                         display.deprecated("Skipping task due to undefined Error, in the future this will be a fatal error.: %s" % to_bytes(e)) | ||||
|                         return None | ||||
|                 items = self._shared_loader_obj.lookup_loader.get(self._task.loop, loader=self._loader, templar=templar).run(terms=loop_terms, variables=self._job_vars, wantlist=True) | ||||
| 
 | ||||
|                 # get lookup | ||||
|                 mylookup = self._shared_loader_obj.lookup_loader.get(self._task.loop, loader=self._loader, templar=templar) | ||||
| 
 | ||||
|                 # give lookup task 'context' for subdir (mostly needed for first_found) | ||||
|                 for subdir in ['tempalte', 'var', 'file']: #TODO: move this to constants? | ||||
|                     if subdir in self._task.name: | ||||
|                         break | ||||
|                 setattr(mylookup,'_subdir', subdir + 's') | ||||
| 
 | ||||
|                 # run lookup | ||||
|                 items = mylookup.run(terms=loop_terms, variables=self._job_vars, wantlist=True) | ||||
|             else: | ||||
|                 raise AnsibleError("Unexpected failure in finding the lookup named '%s' in the available lookup plugins" % self._task.loop) | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue