При использовании приведенных ниже методов выключение и запрос экземпляров роли. Когда я завершаю работу виртуальной машины, все другие экземпляры роли возвращаются с неизвестным статусом готовности. Примерно через пару минут я могу запросить еще раз и получить фактический статус. Как я могу получить фактический статус в режиме реального времени, используя API управления Azure. Или это проблема с настройкой виртуальных машин? Они сконфигурированы с одинаковым местом хранения и одной виртуальной сетью.
Показанный код основывался на шаблоне для развертывания и управления виртуальными машинами в Visual Studio 2015.
Вызов завершения работы виртуальной машины:
var shutdownParams = new VirtualMachineShutdownParameters();
if (deallocate)//deallocate is true in this instance
shutdownParams.PostShutdownAction = PostShutdownAction.StoppedDeallocated; // Fully deallocate resources and stop billing
else
shutdownParams.PostShutdownAction = PostShutdownAction.Stopped; // Just put the machine in stopped state, keeping resources allocated
await _computeManagementClient.VirtualMachines.ShutdownAsync(_parameters.CloudServiceName, _parameters.CloudServiceName, vmName, shutdownParams);
Вызов запроса для всех экземпляров роли
XXX_VirtualMachine
- это класс, который содержит имя и статус экземпляра:
internal List<XXX_VirtualMachine> GetAllVirtualMachines()
{
List<XXX_VirtualMachine> vmList = new List<XXX_VirtualMachine>();
try
{
DeploymentGetResponse deployment;
deployment = _computeManagementClient.Deployments.GetByName(_parameters.CloudServiceName, _parameters.CloudServiceName);
for (int i = 0; i < deployment.RoleInstances.Count; i++)
{
vmList.Add(new XXX_VirtualMachine(deployment.RoleInstances[i].InstanceName, deployment.RoleInstances[i]));
}
}
catch (Exception e)
{
System.Windows.Forms.MessageBox.Show(e.Message);
}
return vmList;
}