# This file was generated by the Julia Swagger Code Generator
# Do not modify this file directly. Modify the swagger specification instead.


@doc raw"""Probe describes a health check to be performed against a container to determine whether it is alive or ready to receive traffic.

    IoK8sApiCoreV1Probe(;
        exec=nothing,
        failureThreshold=nothing,
        httpGet=nothing,
        initialDelaySeconds=nothing,
        periodSeconds=nothing,
        successThreshold=nothing,
        tcpSocket=nothing,
        timeoutSeconds=nothing,
    )

    - exec::IoK8sApiCoreV1ExecAction : One and only one of the following should be specified. Exec specifies the action to take.
    - failureThreshold::Int32 : Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.
    - httpGet::IoK8sApiCoreV1HTTPGetAction : HTTPGet specifies the http request to perform.
    - initialDelaySeconds::Int32 : Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
    - periodSeconds::Int32 : How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.
    - successThreshold::Int32 : Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.
    - tcpSocket::IoK8sApiCoreV1TCPSocketAction : TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported
    - timeoutSeconds::Int32 : Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
"""
mutable struct IoK8sApiCoreV1Probe <: SwaggerModel
    exec::Any # spec type: Union{ Nothing, IoK8sApiCoreV1ExecAction } # spec name: exec
    failureThreshold::Any # spec type: Union{ Nothing, Int32 } # spec name: failureThreshold
    httpGet::Any # spec type: Union{ Nothing, IoK8sApiCoreV1HTTPGetAction } # spec name: httpGet
    initialDelaySeconds::Any # spec type: Union{ Nothing, Int32 } # spec name: initialDelaySeconds
    periodSeconds::Any # spec type: Union{ Nothing, Int32 } # spec name: periodSeconds
    successThreshold::Any # spec type: Union{ Nothing, Int32 } # spec name: successThreshold
    tcpSocket::Any # spec type: Union{ Nothing, IoK8sApiCoreV1TCPSocketAction } # spec name: tcpSocket
    timeoutSeconds::Any # spec type: Union{ Nothing, Int32 } # spec name: timeoutSeconds

    function IoK8sApiCoreV1Probe(;exec=nothing, failureThreshold=nothing, httpGet=nothing, initialDelaySeconds=nothing, periodSeconds=nothing, successThreshold=nothing, tcpSocket=nothing, timeoutSeconds=nothing)
        o = new()
        validate_property(IoK8sApiCoreV1Probe, Symbol("exec"), exec)
        setfield!(o, Symbol("exec"), exec)
        validate_property(IoK8sApiCoreV1Probe, Symbol("failureThreshold"), failureThreshold)
        setfield!(o, Symbol("failureThreshold"), failureThreshold)
        validate_property(IoK8sApiCoreV1Probe, Symbol("httpGet"), httpGet)
        setfield!(o, Symbol("httpGet"), httpGet)
        validate_property(IoK8sApiCoreV1Probe, Symbol("initialDelaySeconds"), initialDelaySeconds)
        setfield!(o, Symbol("initialDelaySeconds"), initialDelaySeconds)
        validate_property(IoK8sApiCoreV1Probe, Symbol("periodSeconds"), periodSeconds)
        setfield!(o, Symbol("periodSeconds"), periodSeconds)
        validate_property(IoK8sApiCoreV1Probe, Symbol("successThreshold"), successThreshold)
        setfield!(o, Symbol("successThreshold"), successThreshold)
        validate_property(IoK8sApiCoreV1Probe, Symbol("tcpSocket"), tcpSocket)
        setfield!(o, Symbol("tcpSocket"), tcpSocket)
        validate_property(IoK8sApiCoreV1Probe, Symbol("timeoutSeconds"), timeoutSeconds)
        setfield!(o, Symbol("timeoutSeconds"), timeoutSeconds)
        o
    end
end # type IoK8sApiCoreV1Probe

const _property_map_IoK8sApiCoreV1Probe = Dict{Symbol,Symbol}(Symbol("exec")=>Symbol("exec"), Symbol("failureThreshold")=>Symbol("failureThreshold"), Symbol("httpGet")=>Symbol("httpGet"), Symbol("initialDelaySeconds")=>Symbol("initialDelaySeconds"), Symbol("periodSeconds")=>Symbol("periodSeconds"), Symbol("successThreshold")=>Symbol("successThreshold"), Symbol("tcpSocket")=>Symbol("tcpSocket"), Symbol("timeoutSeconds")=>Symbol("timeoutSeconds"))
const _property_types_IoK8sApiCoreV1Probe = Dict{Symbol,String}(Symbol("exec")=>"IoK8sApiCoreV1ExecAction", Symbol("failureThreshold")=>"Int32", Symbol("httpGet")=>"IoK8sApiCoreV1HTTPGetAction", Symbol("initialDelaySeconds")=>"Int32", Symbol("periodSeconds")=>"Int32", Symbol("successThreshold")=>"Int32", Symbol("tcpSocket")=>"IoK8sApiCoreV1TCPSocketAction", Symbol("timeoutSeconds")=>"Int32")
Base.propertynames(::Type{ IoK8sApiCoreV1Probe }) = collect(keys(_property_map_IoK8sApiCoreV1Probe))
Swagger.property_type(::Type{ IoK8sApiCoreV1Probe }, name::Symbol) = Union{Nothing,eval(Base.Meta.parse(_property_types_IoK8sApiCoreV1Probe[name]))}
Swagger.field_name(::Type{ IoK8sApiCoreV1Probe }, property_name::Symbol) =  _property_map_IoK8sApiCoreV1Probe[property_name]

function check_required(o::IoK8sApiCoreV1Probe)
    true
end

function validate_property(::Type{ IoK8sApiCoreV1Probe }, name::Symbol, val)
end
