现在已经使用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名称?
感谢。
答案 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的列表。
希望有所帮助。