29 lines
		
	
	
	
		
			1.1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			29 lines
		
	
	
	
		
			1.1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| from django.core.management.base import BaseCommand
 | |
| from opennebula_api.models import OpenNebulaManager
 | |
| from datacenterlight.models import VMTemplate
 | |
| import logging
 | |
| 
 | |
| logger = logging.getLogger(__name__)
 | |
| 
 | |
| 
 | |
| class Command(BaseCommand):
 | |
|     help = 'Fetches the VM templates from OpenNebula and populates the dcl VMTemplate model'
 | |
| 
 | |
|     def handle(self, *args, **options):
 | |
|         try:
 | |
|             manager = OpenNebulaManager()
 | |
|             templates = manager.get_templates()
 | |
|             dcl_vm_templates = []
 | |
|             for template in templates:
 | |
|                 template_name = template.name.strip('public-')
 | |
|                 template_id = template.id
 | |
|                 dcl_vm_template = VMTemplate.create(template_name, template_id)
 | |
|                 dcl_vm_templates.append(dcl_vm_template)
 | |
| 
 | |
|             old_vm_templates = VMTemplate.objects.all()
 | |
|             old_vm_templates.delete()
 | |
| 
 | |
|             for dcl_vm_template in dcl_vm_templates:
 | |
|                 dcl_vm_template.save()
 | |
|         except Exception as e:
 | |
|             logger.error('Error connecting to OpenNebula. Error Details: {err}'.format(err=str(e)))
 |