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…
Reference in a new issue