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

class V1NetworkPolicyPort(BaseModel):
    """
    NetworkPolicyPort describes a port to allow traffic on  # noqa: E501
    """
    end_port: Optional[StrictInt] = Field(None, alias="endPort", description="endPort indicates that the range of ports from port to endPort if set, inclusive, should be allowed by the policy. This field cannot be defined if the port field is not defined or if the port field is defined as a named (string) port. The endPort must be equal or greater than port.")
    port: Optional[Dict[str, Any]] = Field(None, description="port represents the port on the given protocol. This can either be a numerical or named port on a pod. If this field is not provided, this matches all port names and numbers. If present, only traffic on the specified protocol AND port will be matched.")
    protocol: Optional[StrictStr] = Field(None, description="protocol represents the protocol (TCP, UDP, or SCTP) which traffic must match. If not specified, this field defaults to TCP.")
    __properties = ["endPort", "port", "protocol"]

    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) -> V1NetworkPolicyPort:
        """Create an instance of V1NetworkPolicyPort 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) -> V1NetworkPolicyPort:
        """Create an instance of V1NetworkPolicyPort from a dict"""
        if obj is None:
            return None

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

        _obj = V1NetworkPolicyPort.parse_obj({
            "end_port": obj.get("endPort"),
            "port": obj.get("port"),
            "protocol": obj.get("protocol")
        })
        return _obj


