Initial commit of PassiveTest

Change-Id: Idcd9a0c72df5eae6b4eedc544e473ebc9763ccdb
diff --git a/xos/api/service/passivetest.py b/xos/api/service/passivetest.py
new file mode 100644
index 0000000..f5b556d
--- /dev/null
+++ b/xos/api/service/passivetest.py
@@ -0,0 +1,38 @@
+from rest_framework.response import Response
+from rest_framework import serializers
+from api.xosapi_helpers import PlusModelSerializer, XOSViewSet, ReadOnlyField
+from services.passivetest.models import PassiveTestService
+
+class PassiveTestSerializer(PlusModelSerializer):
+    id = ReadOnlyField()
+    humanReadableName = serializers.SerializerMethodField("getHumanReadableName")
+    tap_ports = serializers.CharField(required=False)
+    reset_viv = serializers.BooleanField(required=False)
+
+    class Meta:
+        model = PassiveTestService
+        fields = ('humanReadableName',
+                  'id',
+                  'tap_ports',
+                  'reset_viv')
+
+    def getHumanReadableName(self, obj):
+        return obj.__unicode__()
+
+class PassiveTestViewSet(XOSViewSet):
+    base_name = "passivetest"
+    method_name = "passivetest"
+    method_kind = "viewset"
+    queryset = PassiveTestService.get_service_objects().all()
+    serializer_class = PassiveTestSerializer
+
+    @classmethod
+    def get_urlpatterns(self, api_path="^"):
+        patterns = super(PassiveTestViewSet, self).get_urlpatterns(api_path=api_path)
+        return patterns
+
+    def list(self, request):
+        object_list = self.filter_queryset(self.get_queryset())
+        serializer = self.get_serializer(object_list, many=True)
+        return Response(serializer.data)
+
diff --git a/xos/api/tenant/passivetesttenant.py b/xos/api/tenant/passivetesttenant.py
new file mode 100644
index 0000000..21c9b1a
--- /dev/null
+++ b/xos/api/tenant/passivetesttenant.py
@@ -0,0 +1,39 @@
+from rest_framework.response import Response
+from rest_framework import serializers
+from api.xosapi_helpers import PlusModelSerializer, XOSViewSet, ReadOnlyField
+
+from services.passivetest.models import PassiveTestTenant, PassiveTestService
+
+def get_default_passivetest_service():
+    passivetest_services = PassiveTestService.get_service_objects().all()
+    if passivetest_services:
+        return passivetest_services[0]
+    return None
+
+class PassiveTestTenantSerializer(PlusModelSerializer):
+    id = ReadOnlyField()
+    provider_service = serializers.PrimaryKeyRelatedField(queryset=PassiveTestService.get_service_objects().all(), default=get_default_passivetest_service)
+    backend_status = ReadOnlyField()
+    
+    humanReadableName = serializers.SerializerMethodField("getHumanReadableName")
+
+    class Meta:
+        model = PassiveTestTenant
+        fields = ('humanReadableName', 'id', 'provider_service', 'backend_status')
+
+    def getHumanReadableName(self, obj):
+        return obj.__unicode__()
+
+class PassiveTestTenantViewSet(XOSViewSet):
+    base_name = "passivetesttenant"
+    method_name = "passivetesttenant"
+    method_kind = "viewset"
+    queryset = PassiveTestTenant.get_tenant_objects().all()
+    serializer_class = PassiveTestTenantSerializer
+
+
+    def list(self, request):
+        queryset = self.filter_queryset(self.get_queryset())
+        serializer = self.get_serializer(queryset, many=True)
+        return Response(serializer.data)
+