azure管理库虚拟机状态

时间:2014-10-11 17:27:20

标签: c# api azure

现在已经使用Azure管理库几周了,但是在同一个云服务中获取多个虚拟机的状态(或状态)时遇到了问题。我可以获取虚拟机列表,但找不到显示单个虚拟机状态的属性。到目前为止,我所能找到的只是父云服务的状态。

var deployment=GetAzureDeyployment("mvwVM",DeploymentSlot.Production);
            if (deployment.Roles.Count>0)
            {
                foreach (var role in deployment.Roles)
                    if (role.RoleType == VirtualMachineRoleType.PersistentVMRole.ToString())
                    {
                        Console.WriteLine(role.RoleName);
                        Console.WriteLine(role.AvailabilitySetName);
                    }

如何获得单独的vm状态以及vm名称?

感谢。

1 个答案:

答案 0 :(得分:1)

以下是一些代码(我使用的是2.0管理库):

var deployment=GetAzureDeyployment("mvwVM",DeploymentSlot.Production);

foreach (var instance in deployment.RoleInstances)
{
   Console.WriteLine("Name: {0}, State: {1}", instance.InstanceName, instance.InstanceStatus);
}

这里的区别在于它直接进入RoleInstances并且状态在实例上。它有点令人困惑,因为Cloud Service容器可以具有云服务(如Web或辅助角色)或其中的一个或多个虚拟机。通常,云服务(Web /工作者角色)具有“角色”,然后是角色中的一个或多个实例。由于Cloud Service部署可以支持,因此对象模型会因为需要支持这两种类型的部署而变得混乱。

您使用的代码只是达到了角色级别。在虚拟机的部署中,每个VM都是对象模型中的角色,在Web /辅助角色部署中不一定是这种情况。这也是RoleName是您要查找的VM的名称的原因。

我提供的代码假设我只关注此部署中的虚拟机(因为您无法在同一部署中混合和匹配Web /辅助角色和VM),只需直接转到RoleInstances属性即可。这是部署中每个VM的列表。

希望有所帮助。