# coding: utf-8

"""
    Kubernetes

    No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)

    The version of the OpenAPI document: release-1.29
    Generated by OpenAPI Generator (https://openapi-generator.tech)

    Do not edit the class manually.
"""  # noqa: E501


from __future__ import annotations
import pprint
import re  # noqa: F401
import json


from typing import List, Optional
from pydantic import BaseModel, Field, StrictStr, conlist
from .apiextensions_v1_webhook_client_config import ApiextensionsV1WebhookClientConfig

class V1WebhookConversion(BaseModel):
    """
    WebhookConversion describes how to call a conversion webhook  # noqa: E501
    """
    client_config: Optional[ApiextensionsV1WebhookClientConfig] = Field(None, alias="clientConfig")
    conversion_review_versions: conlist(StrictStr) = Field(..., alias="conversionReviewVersions", description="conversionReviewVersions is an ordered list of preferred `ConversionReview` versions the Webhook expects. The API server will use the first version in the list which it supports. If none of the versions specified in this list are supported by API server, conversion will fail for the custom resource. If a persisted Webhook configuration specifies allowed versions and does not include any versions known to the API Server, calls to the webhook will fail.")
    __properties = ["clientConfig", "conversionReviewVersions"]

    class Config:
        """Pydantic configuration"""
        allow_population_by_field_name = True
        validate_assignment = True

    def to_str(self) -> str:
        """Returns the string representation of the model using alias"""
        return pprint.pformat(self.dict(by_alias=True))

    def to_json(self) -> str:
        """Returns the JSON representation of the model using alias"""
        return json.dumps(self.to_dict())

    @classmethod
    def from_json(cls, json_str: str) -> V1WebhookConversion:
        """Create an instance of V1WebhookConversion from a JSON string"""
        return cls.from_dict(json.loads(json_str))

    def to_dict(self):
        """Returns the dictionary representation of the model using alias"""
        _dict = self.dict(by_alias=True,
                          exclude={
                          },
                          exclude_none=True)
        # override the default output from pydantic by calling `to_dict()` of client_config
        if self.client_config:
            _dict['clientConfig'] = self.client_config.to_dict()
        return _dict

    @classmethod
    def from_dict(cls, obj: dict) -> V1WebhookConversion:
        """Create an instance of V1WebhookConversion from a dict"""
        if obj is None:
            return None

        if not isinstance(obj, dict):
            return V1WebhookConversion.parse_obj(obj)

        _obj = V1WebhookConversion.parse_obj({
            "client_config": ApiextensionsV1WebhookClientConfig.from_dict(obj.get("clientConfig")) if obj.get("clientConfig") is not None else None,
            "conversion_review_versions": obj.get("conversionReviewVersions")
        })
        return _obj


