# 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 Optional
from pydantic import BaseModel, Field, StrictStr

class V1ClaimSource(BaseModel):
    """
    ClaimSource describes a reference to a ResourceClaim.  Exactly one of these fields should be set.  Consumers of this type must treat an empty object as if it has an unknown value.  # noqa: E501
    """
    resource_claim_name: Optional[StrictStr] = Field(None, alias="resourceClaimName", description="ResourceClaimName is the name of a ResourceClaim object in the same namespace as this pod.")
    resource_claim_template_name: Optional[StrictStr] = Field(None, alias="resourceClaimTemplateName", description="ResourceClaimTemplateName is the name of a ResourceClaimTemplate object in the same namespace as this pod.  The template will be used to create a new ResourceClaim, which will be bound to this pod. When this pod is deleted, the ResourceClaim will also be deleted. The pod name and resource name, along with a generated component, will be used to form a unique name for the ResourceClaim, which will be recorded in pod.status.resourceClaimStatuses.  This field is immutable and no changes will be made to the corresponding ResourceClaim by the control plane after creating the ResourceClaim.")
    __properties = ["resourceClaimName", "resourceClaimTemplateName"]

    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) -> V1ClaimSource:
        """Create an instance of V1ClaimSource 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)
        return _dict

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

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

        _obj = V1ClaimSource.parse_obj({
            "resource_claim_name": obj.get("resourceClaimName"),
            "resource_claim_template_name": obj.get("resourceClaimTemplateName")
        })
        return _obj


