# encoding: utf-8
# Code generated by Microsoft (R) AutoRest Code Generator.
# Changes may cause incorrect behavior and will be lost if the code is
# regenerated.
module Azure::Compute::Mgmt::V2020_09_30_preview
module Models
#
# Specifies information about the gallery image definition that you want to
# create or update.
#
class SharedGalleryImage < PirSharedGalleryResource
include MsRestAzure
# @return [OperatingSystemTypes] This property allows you to specify the
# type of the OS that is included in the disk when creating a VM from a
# managed image.
Possible values are:
**Windows**
#
**Linux**. Possible values include: 'Windows', 'Linux'
attr_accessor :os_type
# @return [OperatingSystemStateTypes] This property allows the user to
# specify whether the virtual machines created under this image are
# 'Generalized' or 'Specialized'. Possible values include: 'Generalized',
# 'Specialized'
attr_accessor :os_state
# @return [DateTime] The end of life date of the gallery image
# definition. This property can be used for decommissioning purposes.
# This property is updatable.
attr_accessor :end_of_life_date
# @return [GalleryImageIdentifier]
attr_accessor :identifier
# @return [RecommendedMachineConfiguration]
attr_accessor :recommended
# @return [Disallowed]
attr_accessor :disallowed
# @return [HyperVGeneration] The hypervisor generation of the Virtual
# Machine. Applicable to OS disks only. Possible values include: 'V1',
# 'V2'
attr_accessor :hyper_vgeneration
# @return [Array] A list of gallery image features.
attr_accessor :features
# @return [ImagePurchasePlan]
attr_accessor :purchase_plan
#
# Mapper for SharedGalleryImage class as Ruby Hash.
# This will be used for serialization/deserialization.
#
def self.mapper()
{
client_side_validation: true,
required: false,
serialized_name: 'SharedGalleryImage',
type: {
name: 'Composite',
class_name: 'SharedGalleryImage',
model_properties: {
name: {
client_side_validation: true,
required: false,
read_only: true,
serialized_name: 'name',
type: {
name: 'String'
}
},
location: {
client_side_validation: true,
required: false,
read_only: true,
serialized_name: 'location',
type: {
name: 'String'
}
},
unique_id: {
client_side_validation: true,
required: false,
serialized_name: 'identifier.uniqueId',
type: {
name: 'String'
}
},
os_type: {
client_side_validation: true,
required: true,
serialized_name: 'properties.osType',
type: {
name: 'Enum',
module: 'OperatingSystemTypes'
}
},
os_state: {
client_side_validation: true,
required: true,
serialized_name: 'properties.osState',
type: {
name: 'Enum',
module: 'OperatingSystemStateTypes'
}
},
end_of_life_date: {
client_side_validation: true,
required: false,
serialized_name: 'properties.endOfLifeDate',
type: {
name: 'DateTime'
}
},
identifier: {
client_side_validation: true,
required: true,
serialized_name: 'properties.identifier',
type: {
name: 'Composite',
class_name: 'GalleryImageIdentifier'
}
},
recommended: {
client_side_validation: true,
required: false,
serialized_name: 'properties.recommended',
type: {
name: 'Composite',
class_name: 'RecommendedMachineConfiguration'
}
},
disallowed: {
client_side_validation: true,
required: false,
serialized_name: 'properties.disallowed',
type: {
name: 'Composite',
class_name: 'Disallowed'
}
},
hyper_vgeneration: {
client_side_validation: true,
required: false,
serialized_name: 'properties.hyperVGeneration',
type: {
name: 'String'
}
},
features: {
client_side_validation: true,
required: false,
serialized_name: 'properties.features',
type: {
name: 'Sequence',
element: {
client_side_validation: true,
required: false,
serialized_name: 'GalleryImageFeatureElementType',
type: {
name: 'Composite',
class_name: 'GalleryImageFeature'
}
}
}
},
purchase_plan: {
client_side_validation: true,
required: false,
serialized_name: 'properties.purchasePlan',
type: {
name: 'Composite',
class_name: 'ImagePurchasePlan'
}
}
}
}
}
end
end
end
end