|
12 | 12 | import com.azure.core.util.logging.ClientLogger; |
13 | 13 | import com.azure.core.util.serializer.SerializerAdapter; |
14 | 14 | import com.azure.core.util.serializer.SerializerEncoding; |
| 15 | +import com.azure.resourcemanager.authorization.AuthorizationManager; |
| 16 | +import com.azure.resourcemanager.authorization.models.BuiltInRole; |
| 17 | +import com.azure.resourcemanager.authorization.utils.RoleAssignmentHelper; |
15 | 18 | import com.azure.resourcemanager.compute.ComputeManager; |
| 19 | +import com.azure.resourcemanager.compute.fluent.models.ProximityPlacementGroupInner; |
| 20 | +import com.azure.resourcemanager.compute.fluent.models.VirtualMachineInner; |
| 21 | +import com.azure.resourcemanager.compute.fluent.models.VirtualMachineUpdateInner; |
16 | 22 | import com.azure.resourcemanager.compute.models.AdditionalCapabilities; |
17 | 23 | import com.azure.resourcemanager.compute.models.AvailabilitySet; |
18 | 24 | import com.azure.resourcemanager.compute.models.AvailabilitySetSkuTypes; |
|
22 | 28 | import com.azure.resourcemanager.compute.models.DataDisk; |
23 | 29 | import com.azure.resourcemanager.compute.models.DeleteOptions; |
24 | 30 | import com.azure.resourcemanager.compute.models.DiagnosticsProfile; |
| 31 | +import com.azure.resourcemanager.compute.models.DiffDiskOptions; |
| 32 | +import com.azure.resourcemanager.compute.models.DiffDiskPlacement; |
| 33 | +import com.azure.resourcemanager.compute.models.DiffDiskSettings; |
25 | 34 | import com.azure.resourcemanager.compute.models.Disk; |
26 | 35 | import com.azure.resourcemanager.compute.models.DiskCreateOptionTypes; |
27 | 36 | import com.azure.resourcemanager.compute.models.DiskDeleteOptionTypes; |
|
54 | 63 | import com.azure.resourcemanager.compute.models.VirtualHardDisk; |
55 | 64 | import com.azure.resourcemanager.compute.models.VirtualMachine; |
56 | 65 | import com.azure.resourcemanager.compute.models.VirtualMachineCaptureParameters; |
| 66 | +import com.azure.resourcemanager.compute.models.VirtualMachineCustomImage; |
57 | 67 | import com.azure.resourcemanager.compute.models.VirtualMachineDataDisk; |
58 | 68 | import com.azure.resourcemanager.compute.models.VirtualMachineDiskOptions; |
59 | 69 | import com.azure.resourcemanager.compute.models.VirtualMachineEncryption; |
60 | 70 | import com.azure.resourcemanager.compute.models.VirtualMachineEvictionPolicyTypes; |
61 | 71 | import com.azure.resourcemanager.compute.models.VirtualMachineExtension; |
62 | 72 | import com.azure.resourcemanager.compute.models.VirtualMachineIdentity; |
63 | 73 | import com.azure.resourcemanager.compute.models.VirtualMachineInstanceView; |
64 | | -import com.azure.resourcemanager.compute.models.VirtualMachineCustomImage; |
65 | 74 | import com.azure.resourcemanager.compute.models.VirtualMachinePriorityTypes; |
66 | 75 | import com.azure.resourcemanager.compute.models.VirtualMachineSize; |
67 | 76 | import com.azure.resourcemanager.compute.models.VirtualMachineSizeTypes; |
68 | 77 | import com.azure.resourcemanager.compute.models.VirtualMachineUnmanagedDataDisk; |
69 | 78 | import com.azure.resourcemanager.compute.models.WinRMConfiguration; |
70 | 79 | import com.azure.resourcemanager.compute.models.WinRMListener; |
71 | 80 | import com.azure.resourcemanager.compute.models.WindowsConfiguration; |
72 | | -import com.azure.resourcemanager.compute.fluent.models.ProximityPlacementGroupInner; |
73 | | -import com.azure.resourcemanager.compute.fluent.models.VirtualMachineInner; |
74 | | -import com.azure.resourcemanager.compute.fluent.models.VirtualMachineUpdateInner; |
75 | | -import com.azure.resourcemanager.authorization.models.BuiltInRole; |
76 | | -import com.azure.resourcemanager.authorization.AuthorizationManager; |
77 | | -import com.azure.resourcemanager.authorization.utils.RoleAssignmentHelper; |
78 | 81 | import com.azure.resourcemanager.msi.models.Identity; |
| 82 | +import com.azure.resourcemanager.network.NetworkManager; |
79 | 83 | import com.azure.resourcemanager.network.models.Network; |
80 | 84 | import com.azure.resourcemanager.network.models.NetworkInterface; |
81 | 85 | import com.azure.resourcemanager.network.models.PublicIpAddress; |
82 | | -import com.azure.resourcemanager.network.NetworkManager; |
83 | 86 | import com.azure.resourcemanager.resources.fluentcore.arm.AvailabilityZoneId; |
84 | 87 | import com.azure.resourcemanager.resources.fluentcore.arm.ResourceId; |
85 | 88 | import com.azure.resourcemanager.resources.fluentcore.arm.ResourceUtils; |
|
88 | 91 | import com.azure.resourcemanager.resources.fluentcore.model.Creatable; |
89 | 92 | import com.azure.resourcemanager.resources.fluentcore.model.Indexable; |
90 | 93 | import com.azure.resourcemanager.resources.fluentcore.model.implementation.AcceptedImpl; |
| 94 | +import com.azure.resourcemanager.resources.fluentcore.utils.PagedConverter; |
91 | 95 | import com.azure.resourcemanager.resources.fluentcore.utils.ResourceManagerUtils; |
92 | | -import com.azure.resourcemanager.storage.models.StorageAccount; |
93 | 96 | import com.azure.resourcemanager.storage.StorageManager; |
| 97 | +import com.azure.resourcemanager.storage.models.StorageAccount; |
94 | 98 | import com.fasterxml.jackson.core.JsonProcessingException; |
95 | 99 | import reactor.core.Exceptions; |
96 | 100 | import reactor.core.publisher.Flux; |
|
108 | 112 | import java.util.Set; |
109 | 113 | import java.util.UUID; |
110 | 114 | import java.util.concurrent.Callable; |
111 | | -import com.azure.resourcemanager.resources.fluentcore.utils.PagedConverter; |
112 | 115 |
|
113 | 116 | /** The implementation for VirtualMachine and its create and update interfaces. */ |
114 | 117 | class VirtualMachineImpl |
@@ -1002,6 +1005,17 @@ public VirtualMachineImpl withOSDiskDiskEncryptionSet(String diskEncryptionSetId |
1002 | 1005 | return this; |
1003 | 1006 | } |
1004 | 1007 |
|
| 1008 | + @Override |
| 1009 | + public VirtualMachineImpl withEphemeralOSDisk() { |
| 1010 | + if (this.innerModel().storageProfile().osDisk().diffDiskSettings() == null) { |
| 1011 | + this.innerModel().storageProfile().osDisk().withDiffDiskSettings(new DiffDiskSettings()); |
| 1012 | + } |
| 1013 | + this.innerModel().storageProfile().osDisk().diffDiskSettings().withOption(DiffDiskOptions.LOCAL); |
| 1014 | + // For vm with ephemeral os disk, cache should be read-only |
| 1015 | + withOSDiskCaching(CachingTypes.READ_ONLY); |
| 1016 | + return this; |
| 1017 | + } |
| 1018 | + |
1005 | 1019 | // Virtual machine optional native data disk fluent methods |
1006 | 1020 | @Override |
1007 | 1021 | public UnmanagedDataDiskImpl defineUnmanagedDataDisk(String name) { |
@@ -1702,6 +1716,11 @@ public String osDiskDiskEncryptionSetId() { |
1702 | 1716 | return this.storageProfile().osDisk().managedDisk().diskEncryptionSet().id(); |
1703 | 1717 | } |
1704 | 1718 |
|
| 1719 | + @Override |
| 1720 | + public boolean isOSDiskEphemeral() { |
| 1721 | + return this.storageProfile().osDisk().diffDiskSettings() != null && this.storageProfile().osDisk().diffDiskSettings().placement() != null; |
| 1722 | + } |
| 1723 | + |
1705 | 1724 | @Override |
1706 | 1725 | public Map<Integer, VirtualMachineUnmanagedDataDisk> unmanagedDataDisks() { |
1707 | 1726 | Map<Integer, VirtualMachineUnmanagedDataDisk> dataDisks = new HashMap<>(); |
@@ -2654,6 +2673,14 @@ public String resourceId() { |
2654 | 2673 | }; |
2655 | 2674 | } |
2656 | 2675 |
|
| 2676 | + @Override |
| 2677 | + public VirtualMachineImpl withPlacement(DiffDiskPlacement placement) { |
| 2678 | + if (placement != null) { |
| 2679 | + this.innerModel().storageProfile().osDisk().diffDiskSettings().withPlacement(placement); |
| 2680 | + } |
| 2681 | + return this; |
| 2682 | + } |
| 2683 | + |
2657 | 2684 | /** Class to manage Data disk collection. */ |
2658 | 2685 | private class ManagedDataDiskCollection { |
2659 | 2686 | private final Map<String, DataDisk> newDisksToAttach = new HashMap<>(); |
|
0 commit comments