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