Implement fix_vm_after_celery_error
This commit is contained in:
		
					parent
					
						
							
								17557fd4c9
							
						
					
				
			
			
				commit
				
					
						082c0b00af
					
				
			
		
					 1 changed files with 71 additions and 0 deletions
				
			
		|  | @ -0,0 +1,71 @@ | |||
| from django.core.management.base import BaseCommand | ||||
| from datacenterlight.tasks import handle_metadata_and_emails | ||||
| from opennebula_api.models import OpenNebulaManager | ||||
| import logging | ||||
| import json | ||||
| 
 | ||||
| logger = logging.getLogger(__name__) | ||||
| 
 | ||||
| 
 | ||||
| class Command(BaseCommand): | ||||
|     help = '''Updates the DB after manual creation of VM''' | ||||
| 
 | ||||
|     def add_arguments(self, parser): | ||||
|         parser.add_argument('vm_id', type=int) | ||||
|         parser.add_argument('order_id', type=int) | ||||
|         parser.add_argument('specs', type=str) | ||||
| 
 | ||||
|     def handle(self, *args, **options): | ||||
|         vm_id = options['vm_id'] | ||||
|         order_id = options['order_id'] | ||||
|         user_str = options['user'] | ||||
|         specs_str = options['specs'] | ||||
|         template_str = options['template'] | ||||
| 
 | ||||
|         json_acceptable_string = user_str.replace("'", "\"") | ||||
|         user = json.loads(json_acceptable_string) | ||||
| 
 | ||||
|         json_acceptable_string = specs_str.replace("'", "\"") | ||||
|         specs = json.loads(json_acceptable_string) | ||||
| 
 | ||||
|         json_acceptable_string = template_str.replace("'", "\"") | ||||
|         template = json.loads(json_acceptable_string) | ||||
|         if vm_id <= 0: | ||||
|             self.stdout.write(self.style.ERROR( | ||||
|                 'vm_id can\'t be less than or 0. Given: %s' % vm_id)) | ||||
|             return | ||||
|         if vm_id <= 0: | ||||
|             self.stdout.write(self.style.ERROR( | ||||
|                 'order_id can\'t be less than or 0. Given: %s' % vm_id)) | ||||
|             return | ||||
|         if specs_str is None or specs_str == "": | ||||
|             self.stdout.write( | ||||
|                 self.style.ERROR('specs can\'t be empty or None')) | ||||
|             return | ||||
| 
 | ||||
|         user = { | ||||
|             'name': user['name'], | ||||
|             'email': user['email'], | ||||
|             'username': user['username'], | ||||
|             'pass': user['password'], | ||||
|             'request_scheme': user['request_scheme'], | ||||
|             'request_host': user['request_host'], | ||||
|             'language': user['language'], | ||||
|         } | ||||
| 
 | ||||
|         on_user = user.get('username') | ||||
|         on_pass = user.get('pass') | ||||
| 
 | ||||
|         # Create OpenNebulaManager | ||||
|         manager = OpenNebulaManager(email=on_user, password=on_pass) | ||||
|         handle_metadata_and_emails(order_id, vm_id, manager, user, specs, | ||||
|                                    template) | ||||
|         self.stdout.write( | ||||
|             self.style.SUCCESS( | ||||
|                 'Done handling metadata and emails for %s %s %s' % ( | ||||
|                     order_id, | ||||
|                     vm_id, | ||||
|                     str(user) | ||||
|                 ) | ||||
|            ) | ||||
|         ) | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue