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



mutable struct SecurityRuleAssociations <: SwaggerModel
    networkInterfaceAssociation::Any # spec type: Union{ Nothing, NetworkInterfaceAssociation } # spec name: networkInterfaceAssociation
    subnetAssociation::Any # spec type: Union{ Nothing, SubnetAssociation } # spec name: subnetAssociation
    defaultSecurityRules::Any # spec type: Union{ Nothing, Vector{SecurityRule} } # spec name: defaultSecurityRules
    effectiveSecurityRules::Any # spec type: Union{ Nothing, Vector{EffectiveNetworkSecurityRule} } # spec name: effectiveSecurityRules

    function SecurityRuleAssociations(;networkInterfaceAssociation=nothing, subnetAssociation=nothing, defaultSecurityRules=nothing, effectiveSecurityRules=nothing)
        o = new()
        validate_property(SecurityRuleAssociations, Symbol("networkInterfaceAssociation"), networkInterfaceAssociation)
        setfield!(o, Symbol("networkInterfaceAssociation"), networkInterfaceAssociation)
        validate_property(SecurityRuleAssociations, Symbol("subnetAssociation"), subnetAssociation)
        setfield!(o, Symbol("subnetAssociation"), subnetAssociation)
        validate_property(SecurityRuleAssociations, Symbol("defaultSecurityRules"), defaultSecurityRules)
        setfield!(o, Symbol("defaultSecurityRules"), defaultSecurityRules)
        validate_property(SecurityRuleAssociations, Symbol("effectiveSecurityRules"), effectiveSecurityRules)
        setfield!(o, Symbol("effectiveSecurityRules"), effectiveSecurityRules)
        o
    end
end # type SecurityRuleAssociations

const _property_map_SecurityRuleAssociations = Dict{Symbol,Symbol}(Symbol("networkInterfaceAssociation")=>Symbol("networkInterfaceAssociation"), Symbol("subnetAssociation")=>Symbol("subnetAssociation"), Symbol("defaultSecurityRules")=>Symbol("defaultSecurityRules"), Symbol("effectiveSecurityRules")=>Symbol("effectiveSecurityRules"))
const _property_types_SecurityRuleAssociations = Dict{Symbol,String}(Symbol("networkInterfaceAssociation")=>"NetworkInterfaceAssociation", Symbol("subnetAssociation")=>"SubnetAssociation", Symbol("defaultSecurityRules")=>"Vector{SecurityRule}", Symbol("effectiveSecurityRules")=>"Vector{EffectiveNetworkSecurityRule}")
Base.propertynames(::Type{ SecurityRuleAssociations }) = collect(keys(_property_map_SecurityRuleAssociations))
Swagger.property_type(::Type{ SecurityRuleAssociations }, name::Symbol) = Union{Nothing,eval(Meta.parse(_property_types_SecurityRuleAssociations[name]))}
Swagger.field_name(::Type{ SecurityRuleAssociations }, property_name::Symbol) =  _property_map_SecurityRuleAssociations[property_name]

function check_required(o::SecurityRuleAssociations)
    true
end

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