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