Added fetchvmtemplates management command in datacenterlight
This commit is contained in:
parent
bc2ad28969
commit
762c8b14cc
1 changed files with 29 additions and 0 deletions
29
datacenterlight/management/commands/fetchvmtemplates.py
Normal file
29
datacenterlight/management/commands/fetchvmtemplates.py
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
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)))
|
Loading…
Reference in a new issue