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.admin.placeholderadmin import PlaceholderAdminMixin
 | 
				
			||||||
from cms.extensions import PageExtensionAdmin
 | 
					from cms.extensions import PageExtensionAdmin
 | 
				
			||||||
from .cms_models import CMSIntegration, CMSFaviconExtension
 | 
					from .cms_models import CMSIntegration, CMSFaviconExtension
 | 
				
			||||||
from .models import VMPricing
 | 
					from .models import VMPricing, VMTemplate
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class CMSIntegrationAdmin(PlaceholderAdminMixin, admin.ModelAdmin):
 | 
					class CMSIntegrationAdmin(PlaceholderAdminMixin, admin.ModelAdmin):
 | 
				
			||||||
| 
						 | 
					@ -16,3 +16,4 @@ class CMSFaviconExtensionAdmin(PageExtensionAdmin):
 | 
				
			||||||
admin.site.register(CMSIntegration, CMSIntegrationAdmin)
 | 
					admin.site.register(CMSIntegration, CMSIntegrationAdmin)
 | 
				
			||||||
admin.site.register(CMSFaviconExtension, CMSFaviconExtensionAdmin)
 | 
					admin.site.register(CMSFaviconExtension, CMSFaviconExtensionAdmin)
 | 
				
			||||||
admin.site.register(VMPricing)
 | 
					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.file import FilerFileField
 | 
				
			||||||
from filer.fields.image import FilerImageField
 | 
					from filer.fields.image import FilerImageField
 | 
				
			||||||
 | 
					
 | 
				
			||||||
from datacenterlight.models import VMPricing
 | 
					from datacenterlight.models import VMPricing, VMTemplate
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class CMSIntegration(models.Model):
 | 
					class CMSIntegration(models.Model):
 | 
				
			||||||
| 
						 | 
					@ -299,3 +299,7 @@ class DCLCalculatorPluginModel(CMSPlugin):
 | 
				
			||||||
        help_text='Choose a pricing that will be associated with this '
 | 
					        help_text='Choose a pricing that will be associated with this '
 | 
				
			||||||
                  'Calculator'
 | 
					                  '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 = super(DCLCalculatorPlugin, self).render(
 | 
				
			||||||
            context, instance, placeholder
 | 
					            context, instance, placeholder
 | 
				
			||||||
        )
 | 
					        )
 | 
				
			||||||
        context['templates'] = VMTemplate.objects.all()
 | 
					        context['templates'] = VMTemplate.objects.filter(
 | 
				
			||||||
 | 
					            vm_type=instance.vm_type
 | 
				
			||||||
 | 
					        )
 | 
				
			||||||
        return context
 | 
					        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):
 | 
					class VMTemplate(models.Model):
 | 
				
			||||||
 | 
					    PUBLIC = 'public'
 | 
				
			||||||
 | 
					    IPV6 = 'ipv6only'
 | 
				
			||||||
 | 
					    VM_TYPE_CHOICES = (
 | 
				
			||||||
 | 
					        (PUBLIC, PUBLIC.title()),
 | 
				
			||||||
 | 
					        (IPV6, IPV6.title()),
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
    name = models.CharField(max_length=50)
 | 
					    name = models.CharField(max_length=50)
 | 
				
			||||||
    opennebula_vm_template_id = models.IntegerField()
 | 
					    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
 | 
					    @classmethod
 | 
				
			||||||
    def create(cls, name, opennebula_vm_template_id):
 | 
					    def create(cls, name, opennebula_vm_template_id, vm_type):
 | 
				
			||||||
        vm_template = cls(
 | 
					        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
 | 
					        return vm_template
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -362,12 +362,12 @@ class OpenNebulaManager():
 | 
				
			||||||
        except:
 | 
					        except:
 | 
				
			||||||
            raise ConnectionRefusedError
 | 
					            raise ConnectionRefusedError
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def get_templates(self):
 | 
					    def get_templates(self, prefix='public-'):
 | 
				
			||||||
        try:
 | 
					        try:
 | 
				
			||||||
            public_templates = [
 | 
					            public_templates = [
 | 
				
			||||||
                template
 | 
					                template
 | 
				
			||||||
                for template in self._get_template_pool()
 | 
					                for template in self._get_template_pool()
 | 
				
			||||||
                if template.name.startswith('public-')
 | 
					                if template.name.startswith(prefix)
 | 
				
			||||||
            ]
 | 
					            ]
 | 
				
			||||||
            return public_templates
 | 
					            return public_templates
 | 
				
			||||||
        except ConnectionRefusedError:
 | 
					        except ConnectionRefusedError:
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue