from rest_framework import serializers from hub.services.models import Service, CloudProvider class ServicePlanSerializer(serializers.Serializer): id = serializers.CharField() name = serializers.CharField() description = serializers.CharField() metadata = serializers.DictField() free = serializers.BooleanField(default=False) class ServiceSerializer(serializers.Serializer): id = serializers.CharField() name = serializers.CharField() description = serializers.CharField() bindable = serializers.BooleanField(default=True) plans = ServicePlanSerializer(many=True) metadata = serializers.DictField() tags = serializers.ListField(child=serializers.CharField()) class CatalogSerializer(serializers.Serializer): services = ServiceSerializer(many=True) class ProvisionRequestSerializer(serializers.Serializer): service_id = serializers.CharField() plan_id = serializers.CharField() organization_guid = serializers.CharField(required=False) space_guid = serializers.CharField(required=False) parameters = serializers.DictField(required=False) class ProvisionResponseSerializer(serializers.Serializer): dashboard_url = serializers.URLField(required=False) operation = serializers.CharField(required=False, allow_null=True) class BindingRequestSerializer(serializers.Serializer): service_id = serializers.CharField() plan_id = serializers.CharField() bind_resource = serializers.DictField(required=False) parameters = serializers.DictField(required=False) class BindingResponseSerializer(serializers.Serializer): credentials = serializers.DictField() syslog_drain_url = serializers.URLField(required=False, allow_null=True) route_service_url = serializers.URLField(required=False, allow_null=True) volume_mounts = serializers.ListField(required=False)