# 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_06_01
module Models
#
# Describes a Virtual Machine Scale Set.
#
class VirtualMachineScaleSet < Resource
include MsRestAzure
# @return [Sku] The virtual machine scale set sku.
attr_accessor :sku
# @return [Plan] Specifies information about the marketplace image used
# to create the virtual machine. This element is only used for
# marketplace images. Before you can use a marketplace image from an API,
# you must enable the image for programmatic use. In the Azure portal,
# find the marketplace image that you want to use and then click **Want
# to deploy programmatically, Get Started ->**. Enter any required
# information and then click **Save**.
attr_accessor :plan
# @return [UpgradePolicy] The upgrade policy.
attr_accessor :upgrade_policy
# @return [AutomaticRepairsPolicy] Policy for automatic repairs.
attr_accessor :automatic_repairs_policy
# @return [VirtualMachineScaleSetVMProfile] The virtual machine profile.
attr_accessor :virtual_machine_profile
# @return [String] The provisioning state, which only appears in the
# response.
attr_accessor :provisioning_state
# @return [Boolean] Specifies whether the Virtual Machine Scale Set
# should be overprovisioned.
attr_accessor :overprovision
# @return [Boolean] When Overprovision is enabled, extensions are
# launched only on the requested number of VMs which are finally kept.
# This property will hence ensure that the extensions do not run on the
# extra overprovisioned VMs.
attr_accessor :do_not_run_extensions_on_overprovisioned_vms
# @return [String] Specifies the ID which uniquely identifies a Virtual
# Machine Scale Set.
attr_accessor :unique_id
# @return [Boolean] When true this limits the scale set to a single
# placement group, of max size 100 virtual machines. NOTE: If
# singlePlacementGroup is true, it may be modified to false. However, if
# singlePlacementGroup is false, it may not be modified to true.
attr_accessor :single_placement_group
# @return [Boolean] Whether to force strictly even Virtual Machine
# distribution cross x-zones in case there is zone outage.
attr_accessor :zone_balance
# @return [Integer] Fault Domain count for each placement group.
attr_accessor :platform_fault_domain_count
# @return [SubResource] Specifies information about the proximity
# placement group that the virtual machine scale set should be assigned
# to.
Minimum api-version: 2018-04-01.
attr_accessor :proximity_placement_group
# @return [SubResource] Specifies information about the dedicated host
# group that the virtual machine scale set resides in.
Minimum
# api-version: 2020-06-01.
attr_accessor :host_group
# @return [AdditionalCapabilities] Specifies additional capabilities
# enabled or disabled on the Virtual Machines in the Virtual Machine
# Scale Set. For instance: whether the Virtual Machines have the
# capability to support attaching managed data disks with UltraSSD_LRS
# storage account type.
attr_accessor :additional_capabilities
# @return [ScaleInPolicy] Specifies the scale-in policy that decides
# which virtual machines are chosen for removal when a Virtual Machine
# Scale Set is scaled-in.
attr_accessor :scale_in_policy
# @return [VirtualMachineScaleSetIdentity] The identity of the virtual
# machine scale set, if configured.
attr_accessor :identity
# @return [Array] The virtual machine scale set zones. NOTE:
# Availability zones can only be set when you create the scale set
attr_accessor :zones
#
# Mapper for VirtualMachineScaleSet class as Ruby Hash.
# This will be used for serialization/deserialization.
#
def self.mapper()
{
client_side_validation: true,
required: false,
serialized_name: 'VirtualMachineScaleSet',
type: {
name: 'Composite',
class_name: 'VirtualMachineScaleSet',
model_properties: {
id: {
client_side_validation: true,
required: false,
read_only: true,
serialized_name: 'id',
type: {
name: 'String'
}
},
name: {
client_side_validation: true,
required: false,
read_only: true,
serialized_name: 'name',
type: {
name: 'String'
}
},
type: {
client_side_validation: true,
required: false,
read_only: true,
serialized_name: 'type',
type: {
name: 'String'
}
},
location: {
client_side_validation: true,
required: true,
serialized_name: 'location',
type: {
name: 'String'
}
},
tags: {
client_side_validation: true,
required: false,
serialized_name: 'tags',
type: {
name: 'Dictionary',
value: {
client_side_validation: true,
required: false,
serialized_name: 'StringElementType',
type: {
name: 'String'
}
}
}
},
sku: {
client_side_validation: true,
required: false,
serialized_name: 'sku',
type: {
name: 'Composite',
class_name: 'Sku'
}
},
plan: {
client_side_validation: true,
required: false,
serialized_name: 'plan',
type: {
name: 'Composite',
class_name: 'Plan'
}
},
upgrade_policy: {
client_side_validation: true,
required: false,
serialized_name: 'properties.upgradePolicy',
type: {
name: 'Composite',
class_name: 'UpgradePolicy'
}
},
automatic_repairs_policy: {
client_side_validation: true,
required: false,
serialized_name: 'properties.automaticRepairsPolicy',
type: {
name: 'Composite',
class_name: 'AutomaticRepairsPolicy'
}
},
virtual_machine_profile: {
client_side_validation: true,
required: false,
serialized_name: 'properties.virtualMachineProfile',
type: {
name: 'Composite',
class_name: 'VirtualMachineScaleSetVMProfile'
}
},
provisioning_state: {
client_side_validation: true,
required: false,
read_only: true,
serialized_name: 'properties.provisioningState',
type: {
name: 'String'
}
},
overprovision: {
client_side_validation: true,
required: false,
serialized_name: 'properties.overprovision',
type: {
name: 'Boolean'
}
},
do_not_run_extensions_on_overprovisioned_vms: {
client_side_validation: true,
required: false,
serialized_name: 'properties.doNotRunExtensionsOnOverprovisionedVMs',
type: {
name: 'Boolean'
}
},
unique_id: {
client_side_validation: true,
required: false,
read_only: true,
serialized_name: 'properties.uniqueId',
type: {
name: 'String'
}
},
single_placement_group: {
client_side_validation: true,
required: false,
serialized_name: 'properties.singlePlacementGroup',
type: {
name: 'Boolean'
}
},
zone_balance: {
client_side_validation: true,
required: false,
serialized_name: 'properties.zoneBalance',
type: {
name: 'Boolean'
}
},
platform_fault_domain_count: {
client_side_validation: true,
required: false,
serialized_name: 'properties.platformFaultDomainCount',
type: {
name: 'Number'
}
},
proximity_placement_group: {
client_side_validation: true,
required: false,
serialized_name: 'properties.proximityPlacementGroup',
type: {
name: 'Composite',
class_name: 'SubResource'
}
},
host_group: {
client_side_validation: true,
required: false,
serialized_name: 'properties.hostGroup',
type: {
name: 'Composite',
class_name: 'SubResource'
}
},
additional_capabilities: {
client_side_validation: true,
required: false,
serialized_name: 'properties.additionalCapabilities',
type: {
name: 'Composite',
class_name: 'AdditionalCapabilities'
}
},
scale_in_policy: {
client_side_validation: true,
required: false,
serialized_name: 'properties.scaleInPolicy',
type: {
name: 'Composite',
class_name: 'ScaleInPolicy'
}
},
identity: {
client_side_validation: true,
required: false,
serialized_name: 'identity',
type: {
name: 'Composite',
class_name: 'VirtualMachineScaleSetIdentity'
}
},
zones: {
client_side_validation: true,
required: false,
serialized_name: 'zones',
type: {
name: 'Sequence',
element: {
client_side_validation: true,
required: false,
serialized_name: 'StringElementType',
type: {
name: 'String'
}
}
}
}
}
}
}
end
end
end
end