Add exceptions, merge for ssh key
The replace variable of the add_public_key function is now a merge variable in order to append new keys to a user
This commit is contained in:
		
					parent
					
						
							
								ca63355914
							
						
					
				
			
			
				commit
				
					
						0db15d99a5
					
				
			
		
					 3 changed files with 30 additions and 2 deletions
				
			
		
							
								
								
									
										9
									
								
								opennebula_api/exceptions.py
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								opennebula_api/exceptions.py
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,9 @@ | ||||||
|  | 
 | ||||||
|  | class KeyExistsError(Exception): | ||||||
|  |     pass | ||||||
|  | 
 | ||||||
|  | class UserExistsError(Exception): | ||||||
|  |     pass | ||||||
|  | 
 | ||||||
|  | class UserCredentialError(Exception): | ||||||
|  |     pass | ||||||
|  | @ -9,6 +9,7 @@ from django.conf import settings | ||||||
| from django.utils.functional import cached_property | from django.utils.functional import cached_property | ||||||
| 
 | 
 | ||||||
| from utils.models import CustomUser | from utils.models import CustomUser | ||||||
|  | from .exceptions import KeyExistsError, UserExistsError, UserCredentialError | ||||||
| 
 | 
 | ||||||
| logger = logging.getLogger(__name__) | logger = logging.getLogger(__name__) | ||||||
| 
 | 
 | ||||||
|  | @ -439,7 +440,7 @@ class OpenNebulaManager(): | ||||||
|             new_password |             new_password | ||||||
|         ) |         ) | ||||||
| 
 | 
 | ||||||
|     def add_public_key(self, user, public_key='', replace=True): |     def add_public_key(self, user, public_key='', merge=False): | ||||||
|         """  |         """  | ||||||
| 
 | 
 | ||||||
|         Args:  |         Args:  | ||||||
|  | @ -464,8 +465,9 @@ class OpenNebulaManager(): | ||||||
|             open_user = self._get_user(user) |             open_user = self._get_user(user) | ||||||
|             try: |             try: | ||||||
|                 old_key = open_user.template.ssh_public_key  |                 old_key = open_user.template.ssh_public_key  | ||||||
|                 if not replace: |                 if not merge: | ||||||
|                     raise KeyExistsError() |                     raise KeyExistsError() | ||||||
|  |                 public_key += '\n{key}'.format(key=old_key) | ||||||
| 
 | 
 | ||||||
|             except AttributeError: |             except AttributeError: | ||||||
|                 pass |                 pass | ||||||
|  |  | ||||||
|  | @ -81,6 +81,23 @@ class OpenNebulaManagerTestCases(TestCase): | ||||||
| 
 | 
 | ||||||
|         self.assertEqual(user_public_key, public_key) |         self.assertEqual(user_public_key, public_key) | ||||||
|          |          | ||||||
|  |     def test_append_public_key_to_user(self): | ||||||
|  |         """ Test the manager can append a new public key to an user """ | ||||||
|  |         self.manager.create_user(self.user) | ||||||
|  |         user = self.manager._get_user(self.user) | ||||||
|  |         public_key = 'test' | ||||||
|  |         self.manager.add_public_key(self.user, public_key) | ||||||
|  |         # Fetch new user information from opennebula | ||||||
|  |         user.info() | ||||||
|  |         old_public_key = user.template.ssh_public_key | ||||||
|  |         self.manager.add_public_key(self.user, public_key, merge=True) | ||||||
|  |         user.info() | ||||||
|  |         new_public_key = user.template.ssh_public_key | ||||||
|  |         # Cleanup  | ||||||
|  |         user.delete() | ||||||
|  | 
 | ||||||
|  |         self.assertEqual(new_public_key, '{}\n{}'.format(old_public_key, | ||||||
|  |             public_key)) | ||||||
| 
 | 
 | ||||||
|     def test_requires_ssh_key_for_new_vm(self): |     def test_requires_ssh_key_for_new_vm(self): | ||||||
|         """Test the opennebula manager requires the user to have a ssh key when |         """Test the opennebula manager requires the user to have a ssh key when | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue