Remove templates
In the current setup the templates views are not necessary
This commit is contained in:
		
					parent
					
						
							
								0b5cf2c057
							
						
					
				
			
			
				commit
				
					
						ca63355914
					
				
			
		
					 3 changed files with 1 additions and 75 deletions
				
			
		| 
						 | 
					@ -11,37 +11,12 @@ from .models import OpenNebulaManager
 | 
				
			||||||
class VirtualMachineTemplateSerializer(serializers.Serializer):
 | 
					class VirtualMachineTemplateSerializer(serializers.Serializer):
 | 
				
			||||||
    """Serializer to map the virtual machine template instance into JSON format."""
 | 
					    """Serializer to map the virtual machine template instance into JSON format."""
 | 
				
			||||||
    id          = serializers.IntegerField(read_only=True)
 | 
					    id          = serializers.IntegerField(read_only=True)
 | 
				
			||||||
    set_name    = serializers.CharField(read_only=True, label='Name')
 | 
					 | 
				
			||||||
    name        = serializers.SerializerMethodField()
 | 
					    name        = serializers.SerializerMethodField()
 | 
				
			||||||
    cores       = serializers.SerializerMethodField() 
 | 
					    cores       = serializers.SerializerMethodField() 
 | 
				
			||||||
    disk        = serializers.IntegerField(write_only=True)
 | 
					 | 
				
			||||||
    disk_size   = serializers.SerializerMethodField()
 | 
					    disk_size   = serializers.SerializerMethodField()
 | 
				
			||||||
    set_memory      = serializers.IntegerField(write_only=True, label='Memory')
 | 
					 | 
				
			||||||
    memory      = serializers.SerializerMethodField()
 | 
					    memory      = serializers.SerializerMethodField()
 | 
				
			||||||
    price       = serializers.SerializerMethodField()
 | 
					    price       = serializers.SerializerMethodField()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def create(self, validated_data):
 | 
					 | 
				
			||||||
        data = validated_data
 | 
					 | 
				
			||||||
        template = data.pop('template')
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        cores = template.pop('vcpu')
 | 
					 | 
				
			||||||
        name    = data.pop('name')
 | 
					 | 
				
			||||||
        disk_size = data.pop('disk') 
 | 
					 | 
				
			||||||
        memory  = template.pop('memory')
 | 
					 | 
				
			||||||
        manager = OpenNebulaManager()
 | 
					 | 
				
			||||||
        
 | 
					 | 
				
			||||||
        try:
 | 
					 | 
				
			||||||
            opennebula_id = manager.create_template(name=name, cores=cores,
 | 
					 | 
				
			||||||
                                                    memory=memory,
 | 
					 | 
				
			||||||
                                                    disk_size=disk_size,
 | 
					 | 
				
			||||||
                                                    core_price=core_price,
 | 
					 | 
				
			||||||
                                                    disk_size_price=disk_size_price,
 | 
					 | 
				
			||||||
                                                    memory_price=memory_price)
 | 
					 | 
				
			||||||
        except OpenNebulaException as err:
 | 
					 | 
				
			||||||
            raise serializers.ValidationError("OpenNebulaException occured. {0}".format(err))
 | 
					 | 
				
			||||||
        
 | 
					 | 
				
			||||||
        return manager.get_template(template_id=opennebula_id)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    def get_cores(self, obj):
 | 
					    def get_cores(self, obj):
 | 
				
			||||||
        if hasattr(obj.template, 'vcpu'):
 | 
					        if hasattr(obj.template, 'vcpu'):
 | 
				
			||||||
            return obj.template.vcpu
 | 
					            return obj.template.vcpu
 | 
				
			||||||
| 
						 | 
					@ -58,18 +33,6 @@ class VirtualMachineTemplateSerializer(serializers.Serializer):
 | 
				
			||||||
        except:
 | 
					        except:
 | 
				
			||||||
            return 0
 | 
					            return 0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
    def get_price(self, obj):
 | 
					 | 
				
			||||||
        template = obj.template
 | 
					 | 
				
			||||||
        price = float(template.cpu) * 5.0
 | 
					 | 
				
			||||||
        price += (int(template.memory)/1024 * 2.0)
 | 
					 | 
				
			||||||
        try:
 | 
					 | 
				
			||||||
            for disk in template.disks:
 | 
					 | 
				
			||||||
                price += int(disk.size)/1024 * 0.6
 | 
					 | 
				
			||||||
        except:
 | 
					 | 
				
			||||||
            pass
 | 
					 | 
				
			||||||
        return price
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    def get_memory(self, obj):
 | 
					    def get_memory(self, obj):
 | 
				
			||||||
        return int(obj.template.memory)/1024
 | 
					        return int(obj.template.memory)/1024
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,15 +1,10 @@
 | 
				
			||||||
from django.conf.urls import url, include
 | 
					from django.conf.urls import url, include
 | 
				
			||||||
from rest_framework.urlpatterns import format_suffix_patterns
 | 
					from rest_framework.urlpatterns import format_suffix_patterns
 | 
				
			||||||
from .views import TemplateCreateView, TemplateDetailsView,\
 | 
					from .views import VmCreateView, VmDetailsView
 | 
				
			||||||
                   VmCreateView, VmDetailsView
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
urlpatterns = {
 | 
					urlpatterns = {
 | 
				
			||||||
    url(r'^auth/', include('rest_framework.urls', namespace='rest_framework')),
 | 
					    url(r'^auth/', include('rest_framework.urls', namespace='rest_framework')),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    url(r'^templates/$', TemplateCreateView.as_view(), name="template_create"),
 | 
					 | 
				
			||||||
    url(r'^templates/(?P<pk>[0-9]+)/$', TemplateDetailsView.as_view(),
 | 
					 | 
				
			||||||
        name="templates_details"),
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
    url(r'^vms/$', VmCreateView.as_view(), name="vm_create"),
 | 
					    url(r'^vms/$', VmCreateView.as_view(), name="vm_create"),
 | 
				
			||||||
    url(r'^vms/(?P<pk>[0-9]+)/$', VmDetailsView.as_view(),
 | 
					    url(r'^vms/(?P<pk>[0-9]+)/$', VmDetailsView.as_view(),
 | 
				
			||||||
        name="vm_details"),
 | 
					        name="vm_details"),
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -20,38 +20,6 @@ class ServiceUnavailable(APIException):
 | 
				
			||||||
    default_code = 'service_unavailable'
 | 
					    default_code = 'service_unavailable'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class TemplateCreateView(generics.ListCreateAPIView):
 | 
					 | 
				
			||||||
    """This class handles the GET and POST requests."""
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    serializer_class = VirtualMachineTemplateSerializer
 | 
					 | 
				
			||||||
    permission_classes = (permissions.IsAuthenticated, permissions.IsAdminUser)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    def get_queryset(self):
 | 
					 | 
				
			||||||
        manager = OpenNebulaManager()
 | 
					 | 
				
			||||||
        return manager.get_templates()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    def perform_create(self, serializer):
 | 
					 | 
				
			||||||
        """Save the post data when creating a new template."""
 | 
					 | 
				
			||||||
        serializer.save()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
class TemplateDetailsView(generics.RetrieveUpdateDestroyAPIView):
 | 
					 | 
				
			||||||
    """This class handles the http GET, PUT and DELETE requests."""
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    serializer_class = VirtualMachineTemplateSerializer
 | 
					 | 
				
			||||||
    permission_classes = (permissions.IsAuthenticated)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    def get_queryset(self):
 | 
					 | 
				
			||||||
        manager = OpenNebulaManager()
 | 
					 | 
				
			||||||
        # We may have ConnectionRefusedError if we don't have a 
 | 
					 | 
				
			||||||
        # connection to OpenNebula. For now, we raise ServiceUnavailable
 | 
					 | 
				
			||||||
        try:
 | 
					 | 
				
			||||||
            templates = manager.get_templates()
 | 
					 | 
				
			||||||
        except ConnectionRefusedError:
 | 
					 | 
				
			||||||
            raise ServiceUnavailable            
 | 
					 | 
				
			||||||
        
 | 
					 | 
				
			||||||
        return templates
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
class VmCreateView(generics.ListCreateAPIView):
 | 
					class VmCreateView(generics.ListCreateAPIView):
 | 
				
			||||||
    """This class handles the GET and POST requests."""
 | 
					    """This class handles the GET and POST requests."""
 | 
				
			||||||
    serializer_class = VirtualMachineSerializer
 | 
					    serializer_class = VirtualMachineSerializer
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue