website/hub/broker/serializers.py
2025-01-31 15:34:10 +01:00

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")