使用新的 Azure 资源管理器 API 从虚拟机分离磁盘

问题描述 投票:0回答:1

我很难将自动化的 Azure VM 管理从旧的 .NET Fluent API 移植到新的 ARM API(

Azure.ResourceManager.*
命名空间中的 API)。

最重要的一点是从虚拟机中分离磁盘。

VirtualMachineResource
只有一种
UpdateAsync
方法,那就是取
VirtualMachinePatch
。我可以使用此补丁对象成功附加之前未附加的磁盘:

        var vmPatch = new VirtualMachinePatch
        {
            StorageProfile = new VirtualMachineStorageProfile
            {
                DataDisks =
                {
                    new VirtualMachineDataDisk(0, DiskCreateOptionType.Attach)
                    {
                        ManagedDisk = new VirtualMachineManagedDisk
                        {
                            Id = disc.Id
                        },
                        DeleteOption = DiskDeleteOptionType.Detach
                    }
                }
            }
        };

分离应该如何工作并不明显,而且文档也很少。正如人们所期望的那样,简单地将

DataDisks
属性留空没有任何作用。

旧的 Fluent API 有专门的方法,允许编写类似的东西

    vm.Update().WithoutDataDisk(entry.Lun);

新的使用起来不太明显。有什么想法吗?

.net azure azure-resource-manager azure-rest-api
1个回答
0
投票

我通过查看 .NET SDK 测试套件找到了正确的方法:

        var vmPatch = new VirtualMachinePatch
        {
            StorageProfile = new VirtualMachineStorageProfile
            {
                DataDisks =
                {
                    new VirtualMachineDataDisk(0, DiskCreateOptionType.Attach)
                    {
                        ToBeDetached = true
                    }
                }
            }
        };

事后看来有点明显,但我错过了好几次。

© www.soinside.com 2019 - 2024. All rights reserved.