Exemplo n.º 1
0
class NetworkToVlanSerializer(ChangedBySerializer):
    network = CidrAddressField()

    def validate_network(self, value):
        if value:
            network_exists = Network.objects.filter(network=value).first()
            if not network_exists:
                raise serializers.ValidationError("The network entered does not exist.")
            return network_exists
        return None

    class Meta:
        model = NetworkToVlan
        fields = "__all__"
Exemplo n.º 2
0
class DefaultPoolSerializer(serializers.ModelSerializer):
    pool = serializers.CharField(allow_blank=True, allow_null=True)
    cidr = CidrAddressField()

    def validate_pool(self, value):
        if value:
            pool_exists = Pool.objects.filter(cidr=value).first()
            if not pool_exists:
                raise serializers.ValidationError("The pool entered does not exist.")
            return pool_exists
        return None

    class Meta:
        model = DefaultPool
        fields = "__all__"
Exemplo n.º 3
0
class NetworkCreateUpdateSerializer(serializers.ModelSerializer):
    network = CidrAddressField()
    gateway = InetAddressField()
    dhcp_group = serializers.CharField()
    shared_network = serializers.CharField()

    def validate_dhcp_group(self, value):
        if value:
            dhcp_group_exists = DhcpGroup.objects.filter(name=value).first()
            if not dhcp_group_exists:
                raise serializers.ValidationError(
                    "The dhcp group entered does not exist."
                )
            return dhcp_group_exists
        return None

    def validate_shared_network(self, value):
        if value:
            shared_network_exists = SharedNetwork.objects.filter(name=value).first()
            if not shared_network_exists:
                raise serializers.ValidationError(
                    "The shared network entered does not exist."
                )
            return shared_network_exists
        return None

    def create(self, validated_data):
        validated_data["changed_by"] = self.context["request"].user
        instance = super(NetworkCreateUpdateSerializer, self).create(validated_data)

        network = Network.objects.filter(network=instance.network).first()

        if network:
            addresses = []
            for address in network.network:
                reserved = False
                if address in (
                    network.gateway,
                    network.network[0],
                    network.network[-1],
                ):
                    reserved = True
                pool = (
                    DefaultPool.objects.get_pool_default(address)
                    if not reserved
                    else None
                )
                addresses.append(
                    # TODO: Need to set pool eventually.
                    Address(
                        address=address,
                        network=network,
                        reserved=reserved,
                        pool=pool,
                        changed_by=self.context["request"].user,
                    )
                )
            if addresses:
                Address.objects.bulk_create(addresses)

        return instance

    def update(self, instance, validated_data):
        validated_data["changed_by"] = self.context["request"].user
        return super(NetworkCreateUpdateSerializer, self).update(
            instance, validated_data
        )

    class Meta:
        model = Network
        exclude = ("changed_by",)
Exemplo n.º 4
0
class NetworkRangeSerializer(serializers.ModelSerializer):
    range = CidrAddressField()

    class Meta:
        model = NetworkRange
        fields = ("id", "range")