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



mutable struct IoK8sApiStorageV1StorageClass <: SwaggerModel
    allowVolumeExpansion::Any # spec type: Union{ Nothing, Bool } # spec name: allowVolumeExpansion
    allowedTopologies::Any # spec type: Union{ Nothing, Vector{IoK8sApiCoreV1TopologySelectorTerm} } # spec name: allowedTopologies
    apiVersion::Any # spec type: Union{ Nothing, String } # spec name: apiVersion
    kind::Any # spec type: Union{ Nothing, String } # spec name: kind
    metadata::Any # spec type: Union{ Nothing, IoK8sApimachineryPkgApisMetaV1ObjectMeta } # spec name: metadata
    mountOptions::Any # spec type: Union{ Nothing, Vector{String} } # spec name: mountOptions
    parameters::Any # spec type: Union{ Nothing, Dict{String, String} } # spec name: parameters
    provisioner::Any # spec type: Union{ Nothing, String } # spec name: provisioner
    reclaimPolicy::Any # spec type: Union{ Nothing, String } # spec name: reclaimPolicy
    volumeBindingMode::Any # spec type: Union{ Nothing, String } # spec name: volumeBindingMode

    function IoK8sApiStorageV1StorageClass(;allowVolumeExpansion=nothing, allowedTopologies=nothing, apiVersion=nothing, kind=nothing, metadata=nothing, mountOptions=nothing, parameters=nothing, provisioner=nothing, reclaimPolicy=nothing, volumeBindingMode=nothing)
        o = new()
        validate_property(IoK8sApiStorageV1StorageClass, Symbol("allowVolumeExpansion"), allowVolumeExpansion)
        setfield!(o, Symbol("allowVolumeExpansion"), allowVolumeExpansion)
        validate_property(IoK8sApiStorageV1StorageClass, Symbol("allowedTopologies"), allowedTopologies)
        setfield!(o, Symbol("allowedTopologies"), allowedTopologies)
        validate_property(IoK8sApiStorageV1StorageClass, Symbol("apiVersion"), apiVersion)
        setfield!(o, Symbol("apiVersion"), apiVersion)
        validate_property(IoK8sApiStorageV1StorageClass, Symbol("kind"), kind)
        setfield!(o, Symbol("kind"), kind)
        validate_property(IoK8sApiStorageV1StorageClass, Symbol("metadata"), metadata)
        setfield!(o, Symbol("metadata"), metadata)
        validate_property(IoK8sApiStorageV1StorageClass, Symbol("mountOptions"), mountOptions)
        setfield!(o, Symbol("mountOptions"), mountOptions)
        validate_property(IoK8sApiStorageV1StorageClass, Symbol("parameters"), parameters)
        setfield!(o, Symbol("parameters"), parameters)
        validate_property(IoK8sApiStorageV1StorageClass, Symbol("provisioner"), provisioner)
        setfield!(o, Symbol("provisioner"), provisioner)
        validate_property(IoK8sApiStorageV1StorageClass, Symbol("reclaimPolicy"), reclaimPolicy)
        setfield!(o, Symbol("reclaimPolicy"), reclaimPolicy)
        validate_property(IoK8sApiStorageV1StorageClass, Symbol("volumeBindingMode"), volumeBindingMode)
        setfield!(o, Symbol("volumeBindingMode"), volumeBindingMode)
        o
    end
end # type IoK8sApiStorageV1StorageClass

const _property_map_IoK8sApiStorageV1StorageClass = Dict{Symbol,Symbol}(Symbol("allowVolumeExpansion")=>Symbol("allowVolumeExpansion"), Symbol("allowedTopologies")=>Symbol("allowedTopologies"), Symbol("apiVersion")=>Symbol("apiVersion"), Symbol("kind")=>Symbol("kind"), Symbol("metadata")=>Symbol("metadata"), Symbol("mountOptions")=>Symbol("mountOptions"), Symbol("parameters")=>Symbol("parameters"), Symbol("provisioner")=>Symbol("provisioner"), Symbol("reclaimPolicy")=>Symbol("reclaimPolicy"), Symbol("volumeBindingMode")=>Symbol("volumeBindingMode"))
const _property_types_IoK8sApiStorageV1StorageClass = Dict{Symbol,String}(Symbol("allowVolumeExpansion")=>"Bool", Symbol("allowedTopologies")=>"Vector{IoK8sApiCoreV1TopologySelectorTerm}", Symbol("apiVersion")=>"String", Symbol("kind")=>"String", Symbol("metadata")=>"IoK8sApimachineryPkgApisMetaV1ObjectMeta", Symbol("mountOptions")=>"Vector{String}", Symbol("parameters")=>"Dict{String, String}", Symbol("provisioner")=>"String", Symbol("reclaimPolicy")=>"String", Symbol("volumeBindingMode")=>"String")
Base.propertynames(::Type{ IoK8sApiStorageV1StorageClass }) = collect(keys(_property_map_IoK8sApiStorageV1StorageClass))
Swagger.property_type(::Type{ IoK8sApiStorageV1StorageClass }, name::Symbol) = Union{Nothing,eval(Meta.parse(_property_types_IoK8sApiStorageV1StorageClass[name]))}
Swagger.field_name(::Type{ IoK8sApiStorageV1StorageClass }, property_name::Symbol) =  _property_map_IoK8sApiStorageV1StorageClass[property_name]

function check_required(o::IoK8sApiStorageV1StorageClass)
    (getproperty(o, Symbol("provisioner")) === nothing) && (return false)
    true
end

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