Командлеты Azure Powershell для 1.7, июнь 2012 года: что случилось с Get-OperationStatus?
Новые командлеты Powershell (документированные здесь: http://msdn.microsoft.com/en-us/library/windowsazure/jj152841) выглядят прекрасно, но есть один, который кажется отсутствующим:
Get-OperationStatus -WaitToComplete
Без этого мои операции Azure (например, Set-AzureDeployment
) не ждите завершения.
Это затрудняет понимание того, когда, например, запущен промежуточный экземпляр, прежде чем выполнять VIP-своп.
Есть ли альтернативы?
2 ответа
Итак, после расследования мое первоначальное предположение было частично неверным: вызовы новых командлетов Powershell действительно ожидают успешного завершения, за исключением Set-AzureDeployment -newStatus "Running"
,
Это хорошо, так как нам больше не нужны звонки Get-OperationStatus
разбросаны по сценарию; это плохо, хотя, как Set-AzureDeployment
развертывание раскручивается.
Мы можем позвонить Get-AzureDeployment
Тем не менее, и перебрать RoleInstanceList
выяснить, что происходит. Вот так:
function Get-StagingReady {
$stagingStatus = Get-AzureDeployment $azureService -slot staging
if (-not $($stagingStatus.Status -eq "Running")) {
Write-Host $(" ... ... Staging slot status is not Running; value is " + $stagingStatus.Running)
return $False
}
if (-not $stagingStatus.RoleInstanceList) {
Write-Host " ... ... Staging slot has no instances configured yet."
return $False
}
$notReady = $False
Foreach ($roleInstance in $stagingStatus.RoleInstanceList) {
if (-not $($roleInstance.InstanceStatus -eq "ReadyRole")) {
Write-Host $(" ... ... ... Staging slot instance " + $roleInstance.InstanceName + " has status " + $roleInstance.InstanceStatus)
$notReady = $True
}
}
if ($notReady) {
Write-Host " ... ... One or more instances not running."
return $False
}
Write-Host " ... Staging slot ready for use."
return $True
}
function Wait-ForStagingToBeReady {
while ( -not $(Get-StagingReady) ) {
Write-Host " ... ... Staging slot not ready, waiting 15 seconds for Azure to spin up instances."
Start-Sleep -s 15
}
}
function Start-Staging {
Write-Host " ... Starting staging slot."
$staging = Get-Staging $azureService
$result = Set-AzureDeployment `
-Status `
-serviceName $azureService `
-slot "Staging" `
-newStatus "Running"
if (-not $?) {
Write-Host
Write-Host "Unable to start staging slot."
Write-Host "DEPLOY FAILED"
Write-Host
exit 1
}
Wait-ForStagingToBeReady
Write-Host " ... Deployment in Staging slot started."
}
но есть один, который кажется пропавшим без вести
Если это не поддерживается, пожалуйста, найдите альтернативу. Например, используйте REST API напрямую, а не PowerShell. API REST позволяет нам отслеживать асинхронные запросы: http://msdn.microsoft.com/en-us/library/windowsazure/ee460791.
Кроме того, вы также можете отправить запрос о функции на http://www.mygreatwindowsazureidea.com/forums/34192-windows-azure-feature-voting.
С уважением,
Мин Сюй.