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



mutable struct VirtualMachineScaleSetVMProfile <: SwaggerModel
    osProfile::Any # spec type: Union{ Nothing, VirtualMachineScaleSetOSProfile } # spec name: osProfile
    storageProfile::Any # spec type: Union{ Nothing, VirtualMachineScaleSetStorageProfile } # spec name: storageProfile
    networkProfile::Any # spec type: Union{ Nothing, VirtualMachineScaleSetNetworkProfile } # spec name: networkProfile
    diagnosticsProfile::Any # spec type: Union{ Nothing, DiagnosticsProfile } # spec name: diagnosticsProfile
    extensionProfile::Any # spec type: Union{ Nothing, VirtualMachineScaleSetExtensionProfile } # spec name: extensionProfile
    licenseType::Any # spec type: Union{ Nothing, String } # spec name: licenseType

    function VirtualMachineScaleSetVMProfile(;osProfile=nothing, storageProfile=nothing, networkProfile=nothing, diagnosticsProfile=nothing, extensionProfile=nothing, licenseType=nothing)
        o = new()
        validate_property(VirtualMachineScaleSetVMProfile, Symbol("osProfile"), osProfile)
        setfield!(o, Symbol("osProfile"), osProfile)
        validate_property(VirtualMachineScaleSetVMProfile, Symbol("storageProfile"), storageProfile)
        setfield!(o, Symbol("storageProfile"), storageProfile)
        validate_property(VirtualMachineScaleSetVMProfile, Symbol("networkProfile"), networkProfile)
        setfield!(o, Symbol("networkProfile"), networkProfile)
        validate_property(VirtualMachineScaleSetVMProfile, Symbol("diagnosticsProfile"), diagnosticsProfile)
        setfield!(o, Symbol("diagnosticsProfile"), diagnosticsProfile)
        validate_property(VirtualMachineScaleSetVMProfile, Symbol("extensionProfile"), extensionProfile)
        setfield!(o, Symbol("extensionProfile"), extensionProfile)
        validate_property(VirtualMachineScaleSetVMProfile, Symbol("licenseType"), licenseType)
        setfield!(o, Symbol("licenseType"), licenseType)
        o
    end
end # type VirtualMachineScaleSetVMProfile

const _property_map_VirtualMachineScaleSetVMProfile = Dict{Symbol,Symbol}(Symbol("osProfile")=>Symbol("osProfile"), Symbol("storageProfile")=>Symbol("storageProfile"), Symbol("networkProfile")=>Symbol("networkProfile"), Symbol("diagnosticsProfile")=>Symbol("diagnosticsProfile"), Symbol("extensionProfile")=>Symbol("extensionProfile"), Symbol("licenseType")=>Symbol("licenseType"))
const _property_types_VirtualMachineScaleSetVMProfile = Dict{Symbol,String}(Symbol("osProfile")=>"VirtualMachineScaleSetOSProfile", Symbol("storageProfile")=>"VirtualMachineScaleSetStorageProfile", Symbol("networkProfile")=>"VirtualMachineScaleSetNetworkProfile", Symbol("diagnosticsProfile")=>"DiagnosticsProfile", Symbol("extensionProfile")=>"VirtualMachineScaleSetExtensionProfile", Symbol("licenseType")=>"String")
Base.propertynames(::Type{ VirtualMachineScaleSetVMProfile }) = collect(keys(_property_map_VirtualMachineScaleSetVMProfile))
Swagger.property_type(::Type{ VirtualMachineScaleSetVMProfile }, name::Symbol) = Union{Nothing,eval(Meta.parse(_property_types_VirtualMachineScaleSetVMProfile[name]))}
Swagger.field_name(::Type{ VirtualMachineScaleSetVMProfile }, property_name::Symbol) =  _property_map_VirtualMachineScaleSetVMProfile[property_name]

function check_required(o::VirtualMachineScaleSetVMProfile)
    true
end

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