Improved save_ssh_key celery task
This commit is contained in:
		
					parent
					
						
							
								2b541da94b
							
						
					
				
			
			
				commit
				
					
						21f51692c4
					
				
			
		
					 2 changed files with 20 additions and 17 deletions
				
			
		|  | @ -1,31 +1,33 @@ | |||
| from dynamicweb.celery import app | ||||
| from celery.utils.log import get_task_logger | ||||
| from django.conf import settings | ||||
| from cdist.integration import configure_hosts_simple | ||||
| import cdist | ||||
| import tempfile | ||||
| import pathlib | ||||
| from cdist.integration import configure_hosts_simple | ||||
| from celery.utils.log import get_task_logger | ||||
| from django.conf import settings | ||||
| 
 | ||||
| from dynamicweb.celery import app | ||||
| 
 | ||||
| logger = get_task_logger(__name__) | ||||
| 
 | ||||
| 
 | ||||
| @app.task(bind=True, max_retries=settings.CELERY_MAX_RETRIES) | ||||
| def save_ssh_key(hosts, keys): | ||||
| def save_ssh_key(self, hosts, keys): | ||||
|     """ | ||||
|     Saves ssh key into the VMs of a user using cdist | ||||
| 
 | ||||
|     :param hosts: A list of hosts to be configured | ||||
|     :param keys: A list of keys to be added | ||||
|     """ | ||||
|     # Generate manifest to be used for configuring the hosts | ||||
|     return_value = True | ||||
|     with tempfile.NamedTemporaryFile() as tmp_manifest: | ||||
|         tmp_manifest.writelines(['__ssh_authorized_keys root \\', | ||||
|         # Generate manifest to be used for configuring the hosts | ||||
|         tmp_manifest.writelines([b'__ssh_authorized_keys root \\', | ||||
|                                  '  --key "{keys}"'.format( | ||||
|                                      keys='\n'.join(keys))]) | ||||
| 
 | ||||
|         f = pathlib.Path(tmp_manifest.name) | ||||
|         configure_hosts_simple(hosts, | ||||
|                                tmp_manifest.name, | ||||
|                                verbose=cdist.argparse.VERBOSE_TRACE) | ||||
| 
 | ||||
| 
 | ||||
|                                      keys='\n'.join(keys)).encode('utf-8')]) | ||||
|         try: | ||||
|             configure_hosts_simple(hosts, | ||||
|                                    tmp_manifest.name, | ||||
|                                    verbose=cdist.argparse.VERBOSE_TRACE) | ||||
|         except Exception as cdist_exception: | ||||
|             logger.error(cdist_exception) | ||||
|             return_value = False | ||||
|     return return_value | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue