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


mutable struct ContainerServiceAgentPoolProfile <: SwaggerModel
    name::Any # spec type: Union{ Nothing, String } # spec name: name
    count::Any # spec type: Union{ Nothing, Int32 } # spec name: count
    vmSize::Any # spec type: Union{ Nothing, String } # spec name: vmSize
    dnsPrefix::Any # spec type: Union{ Nothing, String } # spec name: dnsPrefix
    fqdn::Any # spec type: Union{ Nothing, String } # spec name: fqdn

    function ContainerServiceAgentPoolProfile(;name=nothing, count=1, vmSize=nothing, dnsPrefix=nothing, fqdn=nothing)
        o = new()
        validate_property(ContainerServiceAgentPoolProfile, Symbol("name"), name)
        setfield!(o, Symbol("name"), name)
        validate_property(ContainerServiceAgentPoolProfile, Symbol("count"), count)
        setfield!(o, Symbol("count"), count)
        validate_property(ContainerServiceAgentPoolProfile, Symbol("vmSize"), vmSize)
        setfield!(o, Symbol("vmSize"), vmSize)
        validate_property(ContainerServiceAgentPoolProfile, Symbol("dnsPrefix"), dnsPrefix)
        setfield!(o, Symbol("dnsPrefix"), dnsPrefix)
        validate_property(ContainerServiceAgentPoolProfile, Symbol("fqdn"), fqdn)
        setfield!(o, Symbol("fqdn"), fqdn)
        o
    end
end # type ContainerServiceAgentPoolProfile

const _property_map_ContainerServiceAgentPoolProfile = Dict{Symbol,Symbol}(Symbol("name")=>Symbol("name"), Symbol("count")=>Symbol("count"), Symbol("vmSize")=>Symbol("vmSize"), Symbol("dnsPrefix")=>Symbol("dnsPrefix"), Symbol("fqdn")=>Symbol("fqdn"))
const _property_types_ContainerServiceAgentPoolProfile = Dict{Symbol,String}(Symbol("name")=>"String", Symbol("count")=>"Int32", Symbol("vmSize")=>"String", Symbol("dnsPrefix")=>"String", Symbol("fqdn")=>"String")
Base.propertynames(::Type{ ContainerServiceAgentPoolProfile }) = collect(keys(_property_map_ContainerServiceAgentPoolProfile))
Swagger.property_type(::Type{ ContainerServiceAgentPoolProfile }, name::Symbol) = Union{Nothing,eval(Base.Meta.parse(_property_types_ContainerServiceAgentPoolProfile[name]))}
Swagger.field_name(::Type{ ContainerServiceAgentPoolProfile }, property_name::Symbol) =  _property_map_ContainerServiceAgentPoolProfile[property_name]

const _allowed_ContainerServiceAgentPoolProfile_vmSize = ["Standard_A0", "Standard_A1", "Standard_A2", "Standard_A3", "Standard_A4", "Standard_A5", "Standard_A6", "Standard_A7", "Standard_A8", "Standard_A9", "Standard_A10", "Standard_A11", "Standard_D1", "Standard_D2", "Standard_D3", "Standard_D4", "Standard_D11", "Standard_D12", "Standard_D13", "Standard_D14", "Standard_D1_v2", "Standard_D2_v2", "Standard_D3_v2", "Standard_D4_v2", "Standard_D5_v2", "Standard_D11_v2", "Standard_D12_v2", "Standard_D13_v2", "Standard_D14_v2", "Standard_G1", "Standard_G2", "Standard_G3", "Standard_G4", "Standard_G5", "Standard_DS1", "Standard_DS2", "Standard_DS3", "Standard_DS4", "Standard_DS11", "Standard_DS12", "Standard_DS13", "Standard_DS14", "Standard_GS1", "Standard_GS2", "Standard_GS3", "Standard_GS4", "Standard_GS5"]

function check_required(o::ContainerServiceAgentPoolProfile)
    (getproperty(o, Symbol("name")) === nothing) && (return false)
    (getproperty(o, Symbol("count")) === nothing) && (return false)
    (getproperty(o, Symbol("dnsPrefix")) === nothing) && (return false)
    true
end

function validate_property(::Type{ ContainerServiceAgentPoolProfile }, name::Symbol, val)
    if name === Symbol("count")
        Swagger.validate_param(name, "ContainerServiceAgentPoolProfile", :maximum, val, 100, false)
        Swagger.validate_param(name, "ContainerServiceAgentPoolProfile", :minimum, val, 1, false)
    end
    if name === Symbol("vmSize")
        Swagger.validate_param(name, "ContainerServiceAgentPoolProfile", :enum, val, _allowed_ContainerServiceAgentPoolProfile_vmSize)
    end
end
