--- /dev/null
+from plstackapi.openstack.client import OpenStackClient
+from plstackapi.openstack.driver import OpenStackDriver
+from plstackapi.planetstack.api.auth import auth_check
+from plstackapi.planetstack.models import DeploymentNetwork
+
+
+def add_deployment_network(auth, name):
+ auth_check(auth)
+ deployment = DeploymentNetwork(name=name)
+ deployment.save()
+ return deployment
+
+def delete_deployment_network(auth, filter={}):
+ auth_check(auth)
+ deployments = DeploymentNetwork.objects.filter(**filter)
+ for deployment in deployments:
+ deployment.delete()
+ return 1
+
+def get_deployment_networks(auth, filter={}):
+ auth_check(auth)
+ deployments = DeploymentNetwork.objects.filter(**filter)
+ return deployments
+
+
+
#url(r'^plstackapi/nodes/$', views.NodeList.as_view(), name='node-list'),
#url(r'^plstackapi/nodes/(?P<pk>[0-9]+)/$', views.NodeDetail.as_view(), name='node-detail'),
- #url(r'^plstackapi/deploymentnetworks/$', views.DeploymentNetworkList.as_view(), name='deploymentnetwork-list'),
- #url(r'^plstackapi/deploymentnetworks/(?P<pk>[0-9]+)/$', views.DeploymentNetworkDetail.as_view(), name='deploymentnetwork-detail'),
+ url(r'^plstackapi/deploymentnetworks/$', DeploymentNetworkListCreate, name='deploymentnetwork-list'),
+ url(r'^plstackapi/deploymentnetworks/(?P<pk>[a-zA-Z0-9]+)/$', views.DeploymentNetworkRetrieveUpdateDestroy.as_view(), name='deploymentnetwork-detail'),
#url(r'^plstackapi/sitedeploymentnetworks/$', views.SiteDeploymentNetworkList.as_view(), name='sitedeploymentnetwork-list'),
#url(r'^plstackapi/sitedeploymentnetworks/(?P<pk>[0-9]+)/$', views.SiteDeploymentNetworkDetail.as_view(), name='sitedeploymentnetwork-detail'),
--- /dev/null
+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.roles import add_deployment_network, delete_deployment_network, get_deployment_networks
+from plstackapi.planetstack.serializers import DeploymentNetworkSerializer
+from plstackapi.util.request import parse_request
+
+
+class DeploymentNetworkListCreate(APIView):
+ """
+ List all deployment networks or create a new role.
+ """
+
+ 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 'deployment_network' in data:
+ deployment = add_deployment_network(data['auth'], data['deployment_network'])
+ serializer = DeploymentNetworkSerializer(deployment)
+ return Response(serializer.data, status=status.HTTP_201_CREATED)
+ else:
+ deployment_networks = get_deployment_networks(data['auth'])
+ serializer = DeploymentNetworkSerializer(deployment_networks, many=True)
+ return Response(serializer.data)
+
+
+class DeploymentNetworkRetrieveUpdateDestroy(APIView):
+ """
+ Retrieve, update or delete a deployment network
+ """
+
+ def post(self, request, pk, format=None):
+ """Retrieve a deployment network"""
+ data = parse_request(request.DATA)
+ if 'auth' not in data:
+ return Response(status=status.HTTP_400_BAD_REQUEST)
+ deployment_networks = get_deployment_networks(data['auth'], {'name': pk})
+ if not deployment_networks:
+ return Response(status=status.HTTP_404_NOT_FOUND)
+ serializer = DeploymentNetworkSerializer(deployment_networks[0])
+ return Response(serializer.data)
+
+ def put(self, request, pk, format=None):
+ """deployment network update not implemnted"""
+ return Response(status=status.HTTP_404_NOT_FOUND)
+
+ def delete(self, request, pk, format=None):
+ data = parse_request(request.DATA)
+ if 'auth' not in data:
+ return Response(status=status.HTTP_400_BAD_REQUEST)
+ delete_deployment_network(data['auth'], {'name': pk})
+ return Response(status=status.HTTP_204_NO_CONTENT)
+
+
+