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


mutable struct VirtualMachineScaleSetVMProperties <: SwaggerModel
    latestModelApplied::Any # spec type: Union{ Nothing, Bool } # spec name: latestModelApplied
    vmId::Any # spec type: Union{ Nothing, String } # spec name: vmId
    instanceView::Any # spec type: Union{ Nothing, VirtualMachineScaleSetVMInstanceView } # spec name: instanceView
    hardwareProfile::Any # spec type: Union{ Nothing, HardwareProfile } # spec name: hardwareProfile
    storageProfile::Any # spec type: Union{ Nothing, StorageProfile } # spec name: storageProfile
    additionalCapabilities::Any # spec type: Union{ Nothing, AdditionalCapabilities } # spec name: additionalCapabilities
    osProfile::Any # spec type: Union{ Nothing, OSProfile } # spec name: osProfile
    securityProfile::Any # spec type: Union{ Nothing, SecurityProfile } # spec name: securityProfile
    networkProfile::Any # spec type: Union{ Nothing, NetworkProfile } # spec name: networkProfile
    networkProfileConfiguration::Any # spec type: Union{ Nothing, VirtualMachineScaleSetVMNetworkProfileConfiguration } # spec name: networkProfileConfiguration
    diagnosticsProfile::Any # spec type: Union{ Nothing, DiagnosticsProfile } # spec name: diagnosticsProfile
    availabilitySet::Any # spec type: Union{ Nothing, SubResource } # spec name: availabilitySet
    provisioningState::Any # spec type: Union{ Nothing, String } # spec name: provisioningState
    licenseType::Any # spec type: Union{ Nothing, String } # spec name: licenseType
    modelDefinitionApplied::Any # spec type: Union{ Nothing, String } # spec name: modelDefinitionApplied
    protectionPolicy::Any # spec type: Union{ Nothing, VirtualMachineScaleSetVMProtectionPolicy } # spec name: protectionPolicy

    function VirtualMachineScaleSetVMProperties(;latestModelApplied=nothing, vmId=nothing, instanceView=nothing, hardwareProfile=nothing, storageProfile=nothing, additionalCapabilities=nothing, osProfile=nothing, securityProfile=nothing, networkProfile=nothing, networkProfileConfiguration=nothing, diagnosticsProfile=nothing, availabilitySet=nothing, provisioningState=nothing, licenseType=nothing, modelDefinitionApplied=nothing, protectionPolicy=nothing)
        o = new()
        validate_property(VirtualMachineScaleSetVMProperties, Symbol("latestModelApplied"), latestModelApplied)
        setfield!(o, Symbol("latestModelApplied"), latestModelApplied)
        validate_property(VirtualMachineScaleSetVMProperties, Symbol("vmId"), vmId)
        setfield!(o, Symbol("vmId"), vmId)
        validate_property(VirtualMachineScaleSetVMProperties, Symbol("instanceView"), instanceView)
        setfield!(o, Symbol("instanceView"), instanceView)
        validate_property(VirtualMachineScaleSetVMProperties, Symbol("hardwareProfile"), hardwareProfile)
        setfield!(o, Symbol("hardwareProfile"), hardwareProfile)
        validate_property(VirtualMachineScaleSetVMProperties, Symbol("storageProfile"), storageProfile)
        setfield!(o, Symbol("storageProfile"), storageProfile)
        validate_property(VirtualMachineScaleSetVMProperties, Symbol("additionalCapabilities"), additionalCapabilities)
        setfield!(o, Symbol("additionalCapabilities"), additionalCapabilities)
        validate_property(VirtualMachineScaleSetVMProperties, Symbol("osProfile"), osProfile)
        setfield!(o, Symbol("osProfile"), osProfile)
        validate_property(VirtualMachineScaleSetVMProperties, Symbol("securityProfile"), securityProfile)
        setfield!(o, Symbol("securityProfile"), securityProfile)
        validate_property(VirtualMachineScaleSetVMProperties, Symbol("networkProfile"), networkProfile)
        setfield!(o, Symbol("networkProfile"), networkProfile)
        validate_property(VirtualMachineScaleSetVMProperties, Symbol("networkProfileConfiguration"), networkProfileConfiguration)
        setfield!(o, Symbol("networkProfileConfiguration"), networkProfileConfiguration)
        validate_property(VirtualMachineScaleSetVMProperties, Symbol("diagnosticsProfile"), diagnosticsProfile)
        setfield!(o, Symbol("diagnosticsProfile"), diagnosticsProfile)
        validate_property(VirtualMachineScaleSetVMProperties, Symbol("availabilitySet"), availabilitySet)
        setfield!(o, Symbol("availabilitySet"), availabilitySet)
        validate_property(VirtualMachineScaleSetVMProperties, Symbol("provisioningState"), provisioningState)
        setfield!(o, Symbol("provisioningState"), provisioningState)
        validate_property(VirtualMachineScaleSetVMProperties, Symbol("licenseType"), licenseType)
        setfield!(o, Symbol("licenseType"), licenseType)
        validate_property(VirtualMachineScaleSetVMProperties, Symbol("modelDefinitionApplied"), modelDefinitionApplied)
        setfield!(o, Symbol("modelDefinitionApplied"), modelDefinitionApplied)
        validate_property(VirtualMachineScaleSetVMProperties, Symbol("protectionPolicy"), protectionPolicy)
        setfield!(o, Symbol("protectionPolicy"), protectionPolicy)
        o
    end
end # type VirtualMachineScaleSetVMProperties

const _property_map_VirtualMachineScaleSetVMProperties = Dict{Symbol,Symbol}(Symbol("latestModelApplied")=>Symbol("latestModelApplied"), Symbol("vmId")=>Symbol("vmId"), Symbol("instanceView")=>Symbol("instanceView"), Symbol("hardwareProfile")=>Symbol("hardwareProfile"), Symbol("storageProfile")=>Symbol("storageProfile"), Symbol("additionalCapabilities")=>Symbol("additionalCapabilities"), Symbol("osProfile")=>Symbol("osProfile"), Symbol("securityProfile")=>Symbol("securityProfile"), Symbol("networkProfile")=>Symbol("networkProfile"), Symbol("networkProfileConfiguration")=>Symbol("networkProfileConfiguration"), Symbol("diagnosticsProfile")=>Symbol("diagnosticsProfile"), Symbol("availabilitySet")=>Symbol("availabilitySet"), Symbol("provisioningState")=>Symbol("provisioningState"), Symbol("licenseType")=>Symbol("licenseType"), Symbol("modelDefinitionApplied")=>Symbol("modelDefinitionApplied"), Symbol("protectionPolicy")=>Symbol("protectionPolicy"))
const _property_types_VirtualMachineScaleSetVMProperties = Dict{Symbol,String}(Symbol("latestModelApplied")=>"Bool", Symbol("vmId")=>"String", Symbol("instanceView")=>"VirtualMachineScaleSetVMInstanceView", Symbol("hardwareProfile")=>"HardwareProfile", Symbol("storageProfile")=>"StorageProfile", Symbol("additionalCapabilities")=>"AdditionalCapabilities", Symbol("osProfile")=>"OSProfile", Symbol("securityProfile")=>"SecurityProfile", Symbol("networkProfile")=>"NetworkProfile", Symbol("networkProfileConfiguration")=>"VirtualMachineScaleSetVMNetworkProfileConfiguration", Symbol("diagnosticsProfile")=>"DiagnosticsProfile", Symbol("availabilitySet")=>"SubResource", Symbol("provisioningState")=>"String", Symbol("licenseType")=>"String", Symbol("modelDefinitionApplied")=>"String", Symbol("protectionPolicy")=>"VirtualMachineScaleSetVMProtectionPolicy")
Base.propertynames(::Type{ VirtualMachineScaleSetVMProperties }) = collect(keys(_property_map_VirtualMachineScaleSetVMProperties))
Swagger.property_type(::Type{ VirtualMachineScaleSetVMProperties }, name::Symbol) = Union{Nothing,eval(Base.Meta.parse(_property_types_VirtualMachineScaleSetVMProperties[name]))}
Swagger.field_name(::Type{ VirtualMachineScaleSetVMProperties }, property_name::Symbol) =  _property_map_VirtualMachineScaleSetVMProperties[property_name]

function check_required(o::VirtualMachineScaleSetVMProperties)
    true
end

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