76 lines
		
	
	
	
		
			2.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			76 lines
		
	
	
	
		
			2.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| from django.core.management.base import BaseCommand
 | |
| from datacenterlight.tasks import handle_metadata_and_emails
 | |
| from opennebula_api.models import OpenNebulaManager
 | |
| from membership.models import CustomUser
 | |
| 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('user', type=str)
 | |
|         parser.add_argument('specs', type=str)
 | |
|         parser.add_argument('template', 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_dict = 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_dict['name'],
 | |
|             'email': user_dict['email'],
 | |
|             'username': user_dict['username'],
 | |
|             'pass': user_dict['pass'],
 | |
|             'request_scheme': user_dict['request_scheme'],
 | |
|             'request_host': user_dict['request_host'],
 | |
|             'language': user_dict['language'],
 | |
|         }
 | |
|         cu = CustomUser.objects.get(username=user.get('username'))
 | |
|         # Create OpenNebulaManager
 | |
|         self.stdout.write(
 | |
|             self.style.SUCCESS(
 | |
|                 'Connecting using %s' % (cu.username)
 | |
|             )
 | |
|         )
 | |
|         manager = OpenNebulaManager(email=cu.username, password=cu.password)
 | |
|         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)
 | |
|                 )
 | |
|            )
 | |
|         )
 |