diff --git a/sdk/compute/azure-mgmt-compute/azure/mgmt/compute/v2019_03_01/models/__init__.py b/sdk/compute/azure-mgmt-compute/azure/mgmt/compute/v2019_03_01/models/__init__.py
index cec113526ae0..0d46a1c70908 100644
--- a/sdk/compute/azure-mgmt-compute/azure/mgmt/compute/v2019_03_01/models/__init__.py
+++ b/sdk/compute/azure-mgmt-compute/azure/mgmt/compute/v2019_03_01/models/__init__.py
@@ -98,6 +98,7 @@
from ._models_py3 import RunCommandInputParameter
from ._models_py3 import RunCommandParameterDefinition
from ._models_py3 import RunCommandResult
+ from ._models_py3 import ScaleInPolicy
from ._models_py3 import ScheduledEventsProfile
from ._models_py3 import Sku
from ._models_py3 import SshConfiguration
@@ -272,6 +273,7 @@
from ._models import RunCommandInputParameter
from ._models import RunCommandParameterDefinition
from ._models import RunCommandResult
+ from ._models import ScaleInPolicy
from ._models import ScheduledEventsProfile
from ._models import Sku
from ._models import SshConfiguration
@@ -399,6 +401,7 @@
VirtualMachinePriorityTypes,
VirtualMachineEvictionPolicyTypes,
UpgradeMode,
+ VirtualMachineScaleSetScaleInRules,
OperatingSystemStateTypes,
IPVersion,
VirtualMachineScaleSetSkuScaleType,
@@ -504,6 +507,7 @@
'RunCommandInputParameter',
'RunCommandParameterDefinition',
'RunCommandResult',
+ 'ScaleInPolicy',
'ScheduledEventsProfile',
'Sku',
'SshConfiguration',
@@ -630,6 +634,7 @@
'VirtualMachinePriorityTypes',
'VirtualMachineEvictionPolicyTypes',
'UpgradeMode',
+ 'VirtualMachineScaleSetScaleInRules',
'OperatingSystemStateTypes',
'IPVersion',
'VirtualMachineScaleSetSkuScaleType',
diff --git a/sdk/compute/azure-mgmt-compute/azure/mgmt/compute/v2019_03_01/models/_compute_management_client_enums.py b/sdk/compute/azure-mgmt-compute/azure/mgmt/compute/v2019_03_01/models/_compute_management_client_enums.py
index ec8c7b1ee03c..5f6a9fdf47df 100644
--- a/sdk/compute/azure-mgmt-compute/azure/mgmt/compute/v2019_03_01/models/_compute_management_client_enums.py
+++ b/sdk/compute/azure-mgmt-compute/azure/mgmt/compute/v2019_03_01/models/_compute_management_client_enums.py
@@ -310,6 +310,13 @@ class UpgradeMode(str, Enum):
rolling = "Rolling"
+class VirtualMachineScaleSetScaleInRules(str, Enum):
+
+ default = "Default"
+ oldest_vm = "OldestVM"
+ newest_vm = "NewestVM"
+
+
class OperatingSystemStateTypes(str, Enum):
generalized = "Generalized"
diff --git a/sdk/compute/azure-mgmt-compute/azure/mgmt/compute/v2019_03_01/models/_models.py b/sdk/compute/azure-mgmt-compute/azure/mgmt/compute/v2019_03_01/models/_models.py
index 9535cb044fb1..9e38d116309c 100644
--- a/sdk/compute/azure-mgmt-compute/azure/mgmt/compute/v2019_03_01/models/_models.py
+++ b/sdk/compute/azure-mgmt-compute/azure/mgmt/compute/v2019_03_01/models/_models.py
@@ -3664,6 +3664,39 @@ def __init__(self, **kwargs):
self.value = kwargs.get('value', None)
+class ScaleInPolicy(Model):
+ """Describes a scale-in policy for a virtual machine scale set.
+
+ :param rules: The rules to be followed when scaling-in a virtual machine
+ scale set.
Possible values are:
**Default** When a
+ virtual machine scale set is scaled in, the scale set will first be
+ balanced across zones if it is a zonal scale set. Then, it will be
+ balanced across Fault Domains as far as possible. Within each Fault
+ Domain, the virtual machines chosen for removal will be the newest ones
+ that are not protected from scale-in.
**OldestVM** When a virtual
+ machine scale set is being scaled-in, the oldest virtual machines that are
+ not protected from scale-in will be chosen for removal. For zonal virtual
+ machine scale sets, the scale set will first be balanced across zones.
+ Within each zone, the oldest virtual machines that are not protected will
+ be chosen for removal.
**NewestVM** When a virtual machine scale
+ set is being scaled-in, the newest virtual machines that are not protected
+ from scale-in will be chosen for removal. For zonal virtual machine scale
+ sets, the scale set will first be balanced across zones. Within each zone,
+ the newest virtual machines that are not protected will be chosen for
+ removal.
+ :type rules: list[str or
+ ~azure.mgmt.compute.v2019_03_01.models.VirtualMachineScaleSetScaleInRules]
+ """
+
+ _attribute_map = {
+ 'rules': {'key': 'rules', 'type': '[str]'},
+ }
+
+ def __init__(self, **kwargs):
+ super(ScaleInPolicy, self).__init__(**kwargs)
+ self.rules = kwargs.get('rules', None)
+
+
class ScheduledEventsProfile(Model):
"""ScheduledEventsProfile.
@@ -5160,6 +5193,11 @@ class VirtualMachineScaleSet(Resource):
attaching managed data disks with UltraSSD_LRS storage account type.
:type additional_capabilities:
~azure.mgmt.compute.v2019_03_01.models.AdditionalCapabilities
+ :param scale_in_policy: Specifies the scale-in policy that decides which
+ virtual machines are chosen for removal when a Virtual Machine Scale Set
+ is scaled-in.
+ :type scale_in_policy:
+ ~azure.mgmt.compute.v2019_03_01.models.ScaleInPolicy
:param identity: The identity of the virtual machine scale set, if
configured.
:type identity:
@@ -5196,6 +5234,7 @@ class VirtualMachineScaleSet(Resource):
'platform_fault_domain_count': {'key': 'properties.platformFaultDomainCount', 'type': 'int'},
'proximity_placement_group': {'key': 'properties.proximityPlacementGroup', 'type': 'SubResource'},
'additional_capabilities': {'key': 'properties.additionalCapabilities', 'type': 'AdditionalCapabilities'},
+ 'scale_in_policy': {'key': 'properties.scaleInPolicy', 'type': 'ScaleInPolicy'},
'identity': {'key': 'identity', 'type': 'VirtualMachineScaleSetIdentity'},
'zones': {'key': 'zones', 'type': '[str]'},
}
@@ -5215,6 +5254,7 @@ def __init__(self, **kwargs):
self.platform_fault_domain_count = kwargs.get('platform_fault_domain_count', None)
self.proximity_placement_group = kwargs.get('proximity_placement_group', None)
self.additional_capabilities = kwargs.get('additional_capabilities', None)
+ self.scale_in_policy = kwargs.get('scale_in_policy', None)
self.identity = kwargs.get('identity', None)
self.zones = kwargs.get('zones', None)
@@ -6136,6 +6176,11 @@ class VirtualMachineScaleSetUpdate(UpdateResource):
attaching managed data disks with UltraSSD_LRS storage account type.
:type additional_capabilities:
~azure.mgmt.compute.v2019_03_01.models.AdditionalCapabilities
+ :param scale_in_policy: Specifies the scale-in policy that decides which
+ virtual machines are chosen for removal when a Virtual Machine Scale Set
+ is scaled-in.
+ :type scale_in_policy:
+ ~azure.mgmt.compute.v2019_03_01.models.ScaleInPolicy
:param identity: The identity of the virtual machine scale set, if
configured.
:type identity:
@@ -6151,6 +6196,7 @@ class VirtualMachineScaleSetUpdate(UpdateResource):
'overprovision': {'key': 'properties.overprovision', 'type': 'bool'},
'single_placement_group': {'key': 'properties.singlePlacementGroup', 'type': 'bool'},
'additional_capabilities': {'key': 'properties.additionalCapabilities', 'type': 'AdditionalCapabilities'},
+ 'scale_in_policy': {'key': 'properties.scaleInPolicy', 'type': 'ScaleInPolicy'},
'identity': {'key': 'identity', 'type': 'VirtualMachineScaleSetIdentity'},
}
@@ -6163,6 +6209,7 @@ def __init__(self, **kwargs):
self.overprovision = kwargs.get('overprovision', None)
self.single_placement_group = kwargs.get('single_placement_group', None)
self.additional_capabilities = kwargs.get('additional_capabilities', None)
+ self.scale_in_policy = kwargs.get('scale_in_policy', None)
self.identity = kwargs.get('identity', None)
diff --git a/sdk/compute/azure-mgmt-compute/azure/mgmt/compute/v2019_03_01/models/_models_py3.py b/sdk/compute/azure-mgmt-compute/azure/mgmt/compute/v2019_03_01/models/_models_py3.py
index 23e9b03627a7..1ecd9cf229d6 100644
--- a/sdk/compute/azure-mgmt-compute/azure/mgmt/compute/v2019_03_01/models/_models_py3.py
+++ b/sdk/compute/azure-mgmt-compute/azure/mgmt/compute/v2019_03_01/models/_models_py3.py
@@ -3664,6 +3664,39 @@ def __init__(self, *, value=None, **kwargs) -> None:
self.value = value
+class ScaleInPolicy(Model):
+ """Describes a scale-in policy for a virtual machine scale set.
+
+ :param rules: The rules to be followed when scaling-in a virtual machine
+ scale set.
Possible values are:
**Default** When a
+ virtual machine scale set is scaled in, the scale set will first be
+ balanced across zones if it is a zonal scale set. Then, it will be
+ balanced across Fault Domains as far as possible. Within each Fault
+ Domain, the virtual machines chosen for removal will be the newest ones
+ that are not protected from scale-in.
**OldestVM** When a virtual
+ machine scale set is being scaled-in, the oldest virtual machines that are
+ not protected from scale-in will be chosen for removal. For zonal virtual
+ machine scale sets, the scale set will first be balanced across zones.
+ Within each zone, the oldest virtual machines that are not protected will
+ be chosen for removal.
**NewestVM** When a virtual machine scale
+ set is being scaled-in, the newest virtual machines that are not protected
+ from scale-in will be chosen for removal. For zonal virtual machine scale
+ sets, the scale set will first be balanced across zones. Within each zone,
+ the newest virtual machines that are not protected will be chosen for
+ removal.
+ :type rules: list[str or
+ ~azure.mgmt.compute.v2019_03_01.models.VirtualMachineScaleSetScaleInRules]
+ """
+
+ _attribute_map = {
+ 'rules': {'key': 'rules', 'type': '[str]'},
+ }
+
+ def __init__(self, *, rules=None, **kwargs) -> None:
+ super(ScaleInPolicy, self).__init__(**kwargs)
+ self.rules = rules
+
+
class ScheduledEventsProfile(Model):
"""ScheduledEventsProfile.
@@ -5160,6 +5193,11 @@ class VirtualMachineScaleSet(Resource):
attaching managed data disks with UltraSSD_LRS storage account type.
:type additional_capabilities:
~azure.mgmt.compute.v2019_03_01.models.AdditionalCapabilities
+ :param scale_in_policy: Specifies the scale-in policy that decides which
+ virtual machines are chosen for removal when a Virtual Machine Scale Set
+ is scaled-in.
+ :type scale_in_policy:
+ ~azure.mgmt.compute.v2019_03_01.models.ScaleInPolicy
:param identity: The identity of the virtual machine scale set, if
configured.
:type identity:
@@ -5196,11 +5234,12 @@ class VirtualMachineScaleSet(Resource):
'platform_fault_domain_count': {'key': 'properties.platformFaultDomainCount', 'type': 'int'},
'proximity_placement_group': {'key': 'properties.proximityPlacementGroup', 'type': 'SubResource'},
'additional_capabilities': {'key': 'properties.additionalCapabilities', 'type': 'AdditionalCapabilities'},
+ 'scale_in_policy': {'key': 'properties.scaleInPolicy', 'type': 'ScaleInPolicy'},
'identity': {'key': 'identity', 'type': 'VirtualMachineScaleSetIdentity'},
'zones': {'key': 'zones', 'type': '[str]'},
}
- def __init__(self, *, location: str, tags=None, sku=None, plan=None, upgrade_policy=None, virtual_machine_profile=None, overprovision: bool=None, do_not_run_extensions_on_overprovisioned_vms: bool=None, single_placement_group: bool=None, zone_balance: bool=None, platform_fault_domain_count: int=None, proximity_placement_group=None, additional_capabilities=None, identity=None, zones=None, **kwargs) -> None:
+ def __init__(self, *, location: str, tags=None, sku=None, plan=None, upgrade_policy=None, virtual_machine_profile=None, overprovision: bool=None, do_not_run_extensions_on_overprovisioned_vms: bool=None, single_placement_group: bool=None, zone_balance: bool=None, platform_fault_domain_count: int=None, proximity_placement_group=None, additional_capabilities=None, scale_in_policy=None, identity=None, zones=None, **kwargs) -> None:
super(VirtualMachineScaleSet, self).__init__(location=location, tags=tags, **kwargs)
self.sku = sku
self.plan = plan
@@ -5215,6 +5254,7 @@ def __init__(self, *, location: str, tags=None, sku=None, plan=None, upgrade_pol
self.platform_fault_domain_count = platform_fault_domain_count
self.proximity_placement_group = proximity_placement_group
self.additional_capabilities = additional_capabilities
+ self.scale_in_policy = scale_in_policy
self.identity = identity
self.zones = zones
@@ -6136,6 +6176,11 @@ class VirtualMachineScaleSetUpdate(UpdateResource):
attaching managed data disks with UltraSSD_LRS storage account type.
:type additional_capabilities:
~azure.mgmt.compute.v2019_03_01.models.AdditionalCapabilities
+ :param scale_in_policy: Specifies the scale-in policy that decides which
+ virtual machines are chosen for removal when a Virtual Machine Scale Set
+ is scaled-in.
+ :type scale_in_policy:
+ ~azure.mgmt.compute.v2019_03_01.models.ScaleInPolicy
:param identity: The identity of the virtual machine scale set, if
configured.
:type identity:
@@ -6151,10 +6196,11 @@ class VirtualMachineScaleSetUpdate(UpdateResource):
'overprovision': {'key': 'properties.overprovision', 'type': 'bool'},
'single_placement_group': {'key': 'properties.singlePlacementGroup', 'type': 'bool'},
'additional_capabilities': {'key': 'properties.additionalCapabilities', 'type': 'AdditionalCapabilities'},
+ 'scale_in_policy': {'key': 'properties.scaleInPolicy', 'type': 'ScaleInPolicy'},
'identity': {'key': 'identity', 'type': 'VirtualMachineScaleSetIdentity'},
}
- def __init__(self, *, tags=None, sku=None, plan=None, upgrade_policy=None, virtual_machine_profile=None, overprovision: bool=None, single_placement_group: bool=None, additional_capabilities=None, identity=None, **kwargs) -> None:
+ def __init__(self, *, tags=None, sku=None, plan=None, upgrade_policy=None, virtual_machine_profile=None, overprovision: bool=None, single_placement_group: bool=None, additional_capabilities=None, scale_in_policy=None, identity=None, **kwargs) -> None:
super(VirtualMachineScaleSetUpdate, self).__init__(tags=tags, **kwargs)
self.sku = sku
self.plan = plan
@@ -6163,6 +6209,7 @@ def __init__(self, *, tags=None, sku=None, plan=None, upgrade_policy=None, virtu
self.overprovision = overprovision
self.single_placement_group = single_placement_group
self.additional_capabilities = additional_capabilities
+ self.scale_in_policy = scale_in_policy
self.identity = identity