From 316210e7dfa47d4a97cbdc80c7b60999822f3694 Mon Sep 17 00:00:00 2001 From: Tony Mack Date: Tue, 9 Apr 2013 09:50:36 -0400 Subject: [PATCH] enable flavors --- .../planetstack/api/{flavor.py => flavors.py} | 0 plstackapi/planetstack/urls.py | 3 + plstackapi/planetstack/views/api_root.py | 1 + plstackapi/planetstack/views/flavors.py | 55 +++++++++++++++++++ 4 files changed, 59 insertions(+) rename plstackapi/planetstack/api/{flavor.py => flavors.py} (100%) create mode 100644 plstackapi/planetstack/views/flavors.py diff --git a/plstackapi/planetstack/api/flavor.py b/plstackapi/planetstack/api/flavors.py similarity index 100% rename from plstackapi/planetstack/api/flavor.py rename to plstackapi/planetstack/api/flavors.py diff --git a/plstackapi/planetstack/urls.py b/plstackapi/planetstack/urls.py index ecff5a0..ed11b87 100644 --- a/plstackapi/planetstack/urls.py +++ b/plstackapi/planetstack/urls.py @@ -6,6 +6,7 @@ from plstackapi.planetstack.views.roles import RoleListCreate, RoleRetrieveUpdat from plstackapi.planetstack.views.sites import SiteListCreate, SiteRetrieveUpdateDestroy from plstackapi.planetstack.views.deployment_networks import DeploymentNetworkListCreate, DeploymentNetworkRetrieveUpdateDestroy from plstackapi.planetstack.views.images import ImageListCreate, ImageRetrieveUpdateDestroy +from plstackapi.planetstack.views.flavors import FlavorListCreate, FlavorRetrieveUpdateDestroy from plstackapi.planetstack.views.api_root import api_root from plstackapi.planetstack.models import Site from rest_framework import generics @@ -50,6 +51,8 @@ urlpatterns = patterns('', url(r'^plstackapi/images/$', ImageListCreate.as_view(), name='image-list'), url(r'^plstackapi/images/(?P[a-zA-Z0-9_]+)/$', ImageRetrieveUpdateDestroy.as_view(), name='image-detail'), + url(r'^plstackapi/flavors/$', FlavorListCreate.as_view(), name='flavor-list'), + url(r'^plstackapi/flavors/(?P[a-zA-Z0-9_]+)/$', FlavorRetrieveUpdateDestroy.as_view(), name='flavor-detail'), #Adding in rest_framework urls url(r'^plstackapi/', include('rest_framework.urls', namespace='rest_framework')), diff --git a/plstackapi/planetstack/views/api_root.py b/plstackapi/planetstack/views/api_root.py index ff3b8f8..d2489c2 100644 --- a/plstackapi/planetstack/views/api_root.py +++ b/plstackapi/planetstack/views/api_root.py @@ -11,4 +11,5 @@ def api_root(request, format=None): 'deploymentNetworks': reverse('deploymentnetwork-list', request=request, format=format), #'slices': reverse('slice-list', request=request, format=format) 'images': reverse('image-list', request=request, format=format), + 'flavors': reverse('flavor-list', request=request, format=format), }) diff --git a/plstackapi/planetstack/views/flavors.py b/plstackapi/planetstack/views/flavors.py new file mode 100644 index 0000000..a522dfc --- /dev/null +++ b/plstackapi/planetstack/views/flavors.py @@ -0,0 +1,55 @@ +from django.http import Http404 +from rest_framework.views import APIView +from rest_framework.response import Response +from rest_framework import status + +from plstackapi.planetstack.api.flavors import add_flavor, delete_flavor, get_flavors +from plstackapi.planetstack.serializers import FlavorSerializer +from plstackapi.util.request import parse_request + + +class FlavorListCreate(APIView): + """ + List all flavors or create a new flavor. + """ + + def post(self, request, format = None): + data = parse_request(request.DATA) + if 'auth' not in data: + return Response(status=status.HTTP_400_BAD_REQUEST) + elif 'flavor' in data: + """Not Implemented""" + return Response(status=status.HTTP_404_NOT_FOUND) + else: + flavors = get_flavors(data['auth']) + serializer = FlavorSerializer(flavors, many=True) + return Response(serializer.data) + + +class FlavorRetrieveUpdateDestroy(APIView): + """ + Retrieve, update or delete an flavor + """ + + def post(self, request, pk, format=None): + """Retrieve an flavor """ + data = parse_request(request.DATA) + if 'auth' not in data: + return Response(status=status.HTTP_400_BAD_REQUEST) + flavors = get_flavors(data['auth'], {'id': pk}) + if not flavors: + return Response(status=status.HTTP_404_NOT_FOUND) + serializer = FlavorSerializer(flavors[0]) + return Response(serializer.data) + + def put(self, request, pk, format=None): + """update flavor not implemnted""" + return Response(status=status.HTTP_404_NOT_FOUND) + + def delete(self, request, pk, format=None): + """delete flavor not implemnted""" + return Response(status=status.HTTP_404_NOT_FOUND) + + + + -- 2.43.0