portforwarding API method
diff --git a/xos/core/xoslib/methods/portforwarding.py b/xos/core/xoslib/methods/portforwarding.py
new file mode 100644
index 0000000..0d24423
--- /dev/null
+++ b/xos/core/xoslib/methods/portforwarding.py
@@ -0,0 +1,59 @@
+from rest_framework.decorators import api_view
+from rest_framework.response import Response
+from rest_framework.reverse import reverse
+from rest_framework import serializers
+from rest_framework import generics
+from rest_framework.views import APIView
+from core.models import *
+from django.forms import widgets
+from django.core.exceptions import PermissionDenied
+from xos.exceptions import XOSNotFound
+
+class PortForwardingList(APIView):
+ method_kind = "list"
+ method_name = "portforwarding"
+
+ def get(self, request, format=None):
+ ports=[]
+ for port in self.get_queryset().all():
+ if port.network and port.network.ports and port.instance and port.instance.node and port.ip:
+ ports.append( {"id": port.id,
+ "ip": port.ip,
+ "ports": port.network.ports,
+ "hostname": port.instance.node.name} )
+
+ return Response(ports)
+
+ def get_queryset(self):
+ queryset = queryset=Port.objects.all()
+
+ node_name = self.request.QUERY_PARAMS.get('node_name', None)
+ if node_name is not None:
+ queryset = queryset.filter(instance__node__name = node_name)
+
+ return queryset
+
+class PortForwardingDetail(APIView):
+ method_kind = "detail"
+ method_name = "portforwarding"
+
+ def get(self, request, format=None, pk=0):
+ ports = self.get_queryset().filter(id=pk)
+ if not ports:
+ raise XOSNotFound("didn't find port for port_id %s" % pk)
+
+ port = ports[0]
+ return Response( {"id": port.id,
+ "ip": port.ip,
+ "ports": port.network.ports,
+ "hostname": port.instance.node.name} )
+
+ def get_queryset(self):
+ queryset = queryset=Port.objects.all()
+
+ node_name = self.request.QUERY_PARAMS.get('node_name', None)
+ if node_name is not None:
+ queryset = queryset.filter(instance__node__name = node_name)
+
+ return queryset
+