49 lines
1.8 KiB
Python
49 lines
1.8 KiB
Python
from rest_framework import serializers
|
|
from hub.services.models import ServiceOffering, Plan
|
|
|
|
|
|
class ServiceUserSerializer(serializers.Serializer):
|
|
email = serializers.EmailField()
|
|
full_name = serializers.CharField()
|
|
role = serializers.CharField()
|
|
|
|
|
|
class ProvisioningContextSerializer(serializers.Serializer):
|
|
platform = serializers.CharField()
|
|
organization_guid = serializers.CharField()
|
|
space_guid = serializers.CharField()
|
|
organization_name = serializers.CharField()
|
|
organization_display_name = serializers.CharField()
|
|
|
|
|
|
class ProvisioningParametersSerializer(serializers.Serializer):
|
|
users = ServiceUserSerializer(many=True)
|
|
|
|
|
|
class ServiceInstanceProvisioningSerializer(serializers.Serializer):
|
|
service_id = serializers.CharField() # This will now represent the offering_id
|
|
plan_id = serializers.CharField()
|
|
organization_guid = serializers.CharField()
|
|
space_guid = serializers.CharField()
|
|
parameters = ProvisioningParametersSerializer()
|
|
context = ProvisioningContextSerializer()
|
|
|
|
def validate_service_id(self, value):
|
|
"""Validate the service_id which now represents the offering_id"""
|
|
try:
|
|
return ServiceOffering.objects.get(pk=value)
|
|
except ServiceOffering.DoesNotExist:
|
|
raise serializers.ValidationError("Invalid offering_id")
|
|
|
|
def validate_plan_id(self, value):
|
|
try:
|
|
# Get the plan and ensure it belongs to the selected offering
|
|
plan = Plan.objects.get(pk=value)
|
|
offering = self.initial_data.get("service_id")
|
|
if str(plan.offering.id) != offering:
|
|
raise serializers.ValidationError(
|
|
"Plan does not belong to the selected offering"
|
|
)
|
|
return plan
|
|
except Plan.DoesNotExist:
|
|
raise serializers.ValidationError("Invalid plan_id")
|