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


@doc raw"""Represents a Quobyte mount that lasts the lifetime of a pod. Quobyte volumes do not support ownership management or SELinux relabeling.

    IoK8sApiCoreV1QuobyteVolumeSource(;
        group=nothing,
        readOnly=nothing,
        registry=nothing,
        tenant=nothing,
        user=nothing,
        volume=nothing,
    )

    - group::String : Group to map volume access to Default is no group
    - readOnly::Bool : ReadOnly here will force the Quobyte volume to be mounted with read-only permissions. Defaults to false.
    - registry::String : Registry represents a single or multiple Quobyte Registry services specified as a string as host:port pair (multiple entries are separated with commas) which acts as the central registry for volumes
    - tenant::String : Tenant owning the given Quobyte volume in the Backend Used with dynamically provisioned Quobyte volumes, value is set by the plugin
    - user::String : User to map volume access to Defaults to serivceaccount user
    - volume::String : Volume is a string that references an already created Quobyte volume by name.
"""
mutable struct IoK8sApiCoreV1QuobyteVolumeSource <: SwaggerModel
    group::Any # spec type: Union{ Nothing, String } # spec name: group
    readOnly::Any # spec type: Union{ Nothing, Bool } # spec name: readOnly
    registry::Any # spec type: Union{ Nothing, String } # spec name: registry
    tenant::Any # spec type: Union{ Nothing, String } # spec name: tenant
    user::Any # spec type: Union{ Nothing, String } # spec name: user
    volume::Any # spec type: Union{ Nothing, String } # spec name: volume

    function IoK8sApiCoreV1QuobyteVolumeSource(;group=nothing, readOnly=nothing, registry=nothing, tenant=nothing, user=nothing, volume=nothing)
        o = new()
        validate_property(IoK8sApiCoreV1QuobyteVolumeSource, Symbol("group"), group)
        setfield!(o, Symbol("group"), group)
        validate_property(IoK8sApiCoreV1QuobyteVolumeSource, Symbol("readOnly"), readOnly)
        setfield!(o, Symbol("readOnly"), readOnly)
        validate_property(IoK8sApiCoreV1QuobyteVolumeSource, Symbol("registry"), registry)
        setfield!(o, Symbol("registry"), registry)
        validate_property(IoK8sApiCoreV1QuobyteVolumeSource, Symbol("tenant"), tenant)
        setfield!(o, Symbol("tenant"), tenant)
        validate_property(IoK8sApiCoreV1QuobyteVolumeSource, Symbol("user"), user)
        setfield!(o, Symbol("user"), user)
        validate_property(IoK8sApiCoreV1QuobyteVolumeSource, Symbol("volume"), volume)
        setfield!(o, Symbol("volume"), volume)
        o
    end
end # type IoK8sApiCoreV1QuobyteVolumeSource

const _property_map_IoK8sApiCoreV1QuobyteVolumeSource = Dict{Symbol,Symbol}(Symbol("group")=>Symbol("group"), Symbol("readOnly")=>Symbol("readOnly"), Symbol("registry")=>Symbol("registry"), Symbol("tenant")=>Symbol("tenant"), Symbol("user")=>Symbol("user"), Symbol("volume")=>Symbol("volume"))
const _property_types_IoK8sApiCoreV1QuobyteVolumeSource = Dict{Symbol,String}(Symbol("group")=>"String", Symbol("readOnly")=>"Bool", Symbol("registry")=>"String", Symbol("tenant")=>"String", Symbol("user")=>"String", Symbol("volume")=>"String")
Base.propertynames(::Type{ IoK8sApiCoreV1QuobyteVolumeSource }) = collect(keys(_property_map_IoK8sApiCoreV1QuobyteVolumeSource))
Swagger.property_type(::Type{ IoK8sApiCoreV1QuobyteVolumeSource }, name::Symbol) = Union{Nothing,eval(Base.Meta.parse(_property_types_IoK8sApiCoreV1QuobyteVolumeSource[name]))}
Swagger.field_name(::Type{ IoK8sApiCoreV1QuobyteVolumeSource }, property_name::Symbol) =  _property_map_IoK8sApiCoreV1QuobyteVolumeSource[property_name]

function check_required(o::IoK8sApiCoreV1QuobyteVolumeSource)
    (getproperty(o, Symbol("registry")) === nothing) && (return false)
    (getproperty(o, Symbol("volume")) === nothing) && (return false)
    true
end

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