vm template prefix
This commit is contained in:
		
					parent
					
						
							
								cba53e0fe3
							
						
					
				
			
			
				commit
				
					
						a4ca17e2ed
					
				
			
		
					 6 changed files with 58 additions and 10 deletions
				
			
		| 
						 | 
				
			
			@ -2,7 +2,7 @@ from django.contrib import admin
 | 
			
		|||
from cms.admin.placeholderadmin import PlaceholderAdminMixin
 | 
			
		||||
from cms.extensions import PageExtensionAdmin
 | 
			
		||||
from .cms_models import CMSIntegration, CMSFaviconExtension
 | 
			
		||||
from .models import VMPricing
 | 
			
		||||
from .models import VMPricing, VMTemplate
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class CMSIntegrationAdmin(PlaceholderAdminMixin, admin.ModelAdmin):
 | 
			
		||||
| 
						 | 
				
			
			@ -16,3 +16,4 @@ class CMSFaviconExtensionAdmin(PageExtensionAdmin):
 | 
			
		|||
admin.site.register(CMSIntegration, CMSIntegrationAdmin)
 | 
			
		||||
admin.site.register(CMSFaviconExtension, CMSFaviconExtensionAdmin)
 | 
			
		||||
admin.site.register(VMPricing)
 | 
			
		||||
admin.site.register(VMTemplate)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -9,7 +9,7 @@ from djangocms_text_ckeditor.fields import HTMLField
 | 
			
		|||
from filer.fields.file import FilerFileField
 | 
			
		||||
from filer.fields.image import FilerImageField
 | 
			
		||||
 | 
			
		||||
from datacenterlight.models import VMPricing
 | 
			
		||||
from datacenterlight.models import VMPricing, VMTemplate
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class CMSIntegration(models.Model):
 | 
			
		||||
| 
						 | 
				
			
			@ -299,3 +299,7 @@ class DCLCalculatorPluginModel(CMSPlugin):
 | 
			
		|||
        help_text='Choose a pricing that will be associated with this '
 | 
			
		||||
                  'Calculator'
 | 
			
		||||
    )
 | 
			
		||||
    vm_type = models.CharField(
 | 
			
		||||
        max_length=50, choices=VMTemplate.VM_TYPE_CHOICES,
 | 
			
		||||
        default=VMTemplate.PUBLIC
 | 
			
		||||
    )
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -88,7 +88,9 @@ class DCLCalculatorPlugin(CMSPluginBase):
 | 
			
		|||
        context = super(DCLCalculatorPlugin, self).render(
 | 
			
		||||
            context, instance, placeholder
 | 
			
		||||
        )
 | 
			
		||||
        context['templates'] = VMTemplate.objects.all()
 | 
			
		||||
        context['templates'] = VMTemplate.objects.filter(
 | 
			
		||||
            vm_type=instance.vm_type
 | 
			
		||||
        )
 | 
			
		||||
        return context
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										25
									
								
								datacenterlight/migrations/0023_auto_20180524_0349.py
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								datacenterlight/migrations/0023_auto_20180524_0349.py
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,25 @@
 | 
			
		|||
# -*- coding: utf-8 -*-
 | 
			
		||||
# Generated by Django 1.9.4 on 2018-05-23 22:19
 | 
			
		||||
from __future__ import unicode_literals
 | 
			
		||||
 | 
			
		||||
from django.db import migrations, models
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class Migration(migrations.Migration):
 | 
			
		||||
 | 
			
		||||
    dependencies = [
 | 
			
		||||
        ('datacenterlight', '0022_auto_20180506_1950'),
 | 
			
		||||
    ]
 | 
			
		||||
 | 
			
		||||
    operations = [
 | 
			
		||||
        migrations.AddField(
 | 
			
		||||
            model_name='dclcalculatorpluginmodel',
 | 
			
		||||
            name='vm_type',
 | 
			
		||||
            field=models.CharField(choices=[('public', 'Public'), ('ipv6only', 'Ipv6Only')], default='public', max_length=50),
 | 
			
		||||
        ),
 | 
			
		||||
        migrations.AddField(
 | 
			
		||||
            model_name='vmtemplate',
 | 
			
		||||
            name='vm_type',
 | 
			
		||||
            field=models.CharField(choices=[('public', 'Public'), ('ipv6only', 'Ipv6Only')], default='public', max_length=50),
 | 
			
		||||
        ),
 | 
			
		||||
    ]
 | 
			
		||||
| 
						 | 
				
			
			@ -6,13 +6,29 @@ logger = logging.getLogger(__name__)
 | 
			
		|||
 | 
			
		||||
 | 
			
		||||
class VMTemplate(models.Model):
 | 
			
		||||
    PUBLIC = 'public'
 | 
			
		||||
    IPV6 = 'ipv6only'
 | 
			
		||||
    VM_TYPE_CHOICES = (
 | 
			
		||||
        (PUBLIC, PUBLIC.title()),
 | 
			
		||||
        (IPV6, IPV6.title()),
 | 
			
		||||
    )
 | 
			
		||||
    name = models.CharField(max_length=50)
 | 
			
		||||
    opennebula_vm_template_id = models.IntegerField()
 | 
			
		||||
    vm_type = models.CharField(
 | 
			
		||||
        max_length=50, choices=VM_TYPE_CHOICES, default=PUBLIC
 | 
			
		||||
    )
 | 
			
		||||
 | 
			
		||||
    def __str__(self):
 | 
			
		||||
        return '%s - %s - %s' % (
 | 
			
		||||
            self.opennebula_vm_template_id, self.vm_type, self.name
 | 
			
		||||
        )
 | 
			
		||||
 | 
			
		||||
    @classmethod
 | 
			
		||||
    def create(cls, name, opennebula_vm_template_id):
 | 
			
		||||
    def create(cls, name, opennebula_vm_template_id, vm_type):
 | 
			
		||||
        vm_template = cls(
 | 
			
		||||
            name=name, opennebula_vm_template_id=opennebula_vm_template_id)
 | 
			
		||||
            name=name, opennebula_vm_template_id=opennebula_vm_template_id,
 | 
			
		||||
            vm_type=vm_type
 | 
			
		||||
        )
 | 
			
		||||
        return vm_template
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -362,12 +362,12 @@ class OpenNebulaManager():
 | 
			
		|||
        except:
 | 
			
		||||
            raise ConnectionRefusedError
 | 
			
		||||
 | 
			
		||||
    def get_templates(self):
 | 
			
		||||
    def get_templates(self, prefix='public-'):
 | 
			
		||||
        try:
 | 
			
		||||
            public_templates = [
 | 
			
		||||
                template
 | 
			
		||||
                for template in self._get_template_pool()
 | 
			
		||||
                if template.name.startswith('public-')
 | 
			
		||||
                if template.name.startswith(prefix)
 | 
			
		||||
            ]
 | 
			
		||||
            return public_templates
 | 
			
		||||
        except ConnectionRefusedError:
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue