From 15aefb2d259cb57b2623020bc2ad5e484bda7344 Mon Sep 17 00:00:00 2001 From: "Hong Li(MSFT)" <74638143+v-hongli1@users.noreply.github.com> Date: Wed, 20 Nov 2024 12:20:58 +0800 Subject: [PATCH] Fix for introduce WithCapacityReservation DefinitionStage into the VirtualMachine model (#42914) * Add support for capacity reservation. --- .../CHANGELOG.md | 6 +- .../implementation/VirtualMachineImpl.java | 23 +++++ .../compute/models/VirtualMachine.java | 35 ++++++- .../VirtualMachineOperationsTests.java | 94 +++++++++++++++++++ 4 files changed, 151 insertions(+), 7 deletions(-) diff --git a/sdk/resourcemanager/azure-resourcemanager-compute/CHANGELOG.md b/sdk/resourcemanager/azure-resourcemanager-compute/CHANGELOG.md index 5bb186b5b4b5..faa9996bc411 100644 --- a/sdk/resourcemanager/azure-resourcemanager-compute/CHANGELOG.md +++ b/sdk/resourcemanager/azure-resourcemanager-compute/CHANGELOG.md @@ -4,11 +4,7 @@ ### Features Added -### Breaking Changes - -### Bugs Fixed - -### Other Changes +- Supported `capacityReservationGroupId` and `withCapacityReservationGroup` methods for `VirtualMachine`. ## 2.44.0 (2024-10-25) diff --git a/sdk/resourcemanager/azure-resourcemanager-compute/src/main/java/com/azure/resourcemanager/compute/implementation/VirtualMachineImpl.java b/sdk/resourcemanager/azure-resourcemanager-compute/src/main/java/com/azure/resourcemanager/compute/implementation/VirtualMachineImpl.java index b233fc4178e3..c8c9d3270a8d 100644 --- a/sdk/resourcemanager/azure-resourcemanager-compute/src/main/java/com/azure/resourcemanager/compute/implementation/VirtualMachineImpl.java +++ b/sdk/resourcemanager/azure-resourcemanager-compute/src/main/java/com/azure/resourcemanager/compute/implementation/VirtualMachineImpl.java @@ -27,6 +27,7 @@ import com.azure.resourcemanager.compute.models.BillingProfile; import com.azure.resourcemanager.compute.models.BootDiagnostics; import com.azure.resourcemanager.compute.models.CachingTypes; +import com.azure.resourcemanager.compute.models.CapacityReservationProfile; import com.azure.resourcemanager.compute.models.DataDisk; import com.azure.resourcemanager.compute.models.DeleteOptions; import com.azure.resourcemanager.compute.models.DiagnosticsProfile; @@ -1993,6 +1994,15 @@ public String userData() { return this.innerModel().userData(); } + @Override + public String capacityReservationGroupId() { + if (this.innerModel().capacityReservation() != null + && this.innerModel().capacityReservation().capacityReservationGroup() != null) { + return this.innerModel().capacityReservation().capacityReservationGroup().id(); + } + return null; + } + // CreateUpdateTaskGroup.ResourceCreator.beforeGroupCreateOrUpdate implementation @Override public void beforeGroupCreateOrUpdate() { @@ -2728,6 +2738,8 @@ private void copyInnerToUpdateParameter(VirtualMachineUpdateInner updateParamete updateParameter.withPriority(this.innerModel().priority()); updateParameter.withEvictionPolicy(this.innerModel().evictionPolicy()); updateParameter.withUserData(this.innerModel().userData()); + updateParameter.withCapacityReservation(this.innerModel().capacityReservation()); + updateParameter.withApplicationProfile(this.innerModel().applicationProfile()); } RoleAssignmentHelper.IdProvider idProvider() { @@ -2866,6 +2878,17 @@ public VirtualMachineImpl withoutEncryptionAtHost() { return this; } + @Override + public VirtualMachineImpl withCapacityReservationGroup(String capacityReservationGroupId) { + if (this.innerModel().capacityReservation() == null) { + this.innerModel().withCapacityReservation(new CapacityReservationProfile()); + } + this.innerModel() + .capacityReservation() + .withCapacityReservationGroup(new SubResource().withId(capacityReservationGroupId)); + return this; + } + /** Class to manage Data disk collection. */ private class ManagedDataDiskCollection { private final Map newDisksToAttach = new HashMap<>(); diff --git a/sdk/resourcemanager/azure-resourcemanager-compute/src/main/java/com/azure/resourcemanager/compute/models/VirtualMachine.java b/sdk/resourcemanager/azure-resourcemanager-compute/src/main/java/com/azure/resourcemanager/compute/models/VirtualMachine.java index fb1f87fe67b9..eb7d6210c3ce 100644 --- a/sdk/resourcemanager/azure-resourcemanager-compute/src/main/java/com/azure/resourcemanager/compute/models/VirtualMachine.java +++ b/sdk/resourcemanager/azure-resourcemanager-compute/src/main/java/com/azure/resourcemanager/compute/models/VirtualMachine.java @@ -455,6 +455,13 @@ Mono runShellScriptAsync(List scriptLines, */ String userData(); + /** + * Gets resource id of capacity reservation group for the virtual machine. + * + * @return the resource id of capacity reservation group for the virtual machine. + */ + String capacityReservationGroupId(); + // Setters // @@ -1952,6 +1959,17 @@ interface WithUserData { WithCreate withUserData(String base64EncodedUserData); } + /** The stage of a virtual machine definition allowing to specify capacity reservation configurations. */ + interface WithCapacityReservation { + /** + * Specifies resource id of capacity reservation group for the virtual machine. + * + * @param capacityReservationGroupId the resource id of capacity reservation group + * @return the next stage of the definition + */ + WithCreate withCapacityReservationGroup(String capacityReservationGroupId); + } + /** * The stage of the definition which contains all the minimum required inputs for the resource to be created, * but also allows for any other optional settings to be specified. @@ -1965,7 +1983,8 @@ interface WithCreate extends Creatable, Resource.DefinitionWithT DefinitionStages.WithUserAssignedManagedServiceIdentity, DefinitionStages.WithLicenseType, DefinitionStages.WithAdditionalCapacities, DefinitionStages.WithNetworkInterfaceDeleteOptions, DefinitionStages.WithEphemeralOSDisk, DefinitionStages.WithScaleSet, DefinitionStages.WithSecurityTypes, - DefinitionStages.WithSecurityProfile, DefinitionStages.WithUserData { + DefinitionStages.WithSecurityProfile, DefinitionStages.WithUserData, + DefinitionStages.WithCapacityReservation { /** * Begins creating the virtual machine resource. @@ -2617,6 +2636,17 @@ interface WithUserData { */ Update withUserData(String base64EncodedUserData); } + + /** The stage of the virtual machine update allowing to capacity reservation configurations. */ + interface WithCapacityReservation { + /** + * Specifies resource id of capacity reservation group for the virtual machine. + * + * @param capacityReservationGroupId the resource id of capacity reservation group + * @return the next stage of the update + */ + Update withCapacityReservationGroup(String capacityReservationGroupId); + } } /** The template for an update operation, containing all the settings that can be modified. */ @@ -2626,7 +2656,8 @@ interface Update extends Appliable, Resource.UpdateWithTags