全部,我正在尝试将我的云服务部署到Windows Azure
。目前它工作正常。但我仍然试图理解其中的细节。如下Power Shell
脚本。
在Staging
成功执行后,该脚本正试图获取New-AzureDeployment
位置中的deplpoyment状态。
while ($True) {
$deployment = Get-AzureDeployment -ServiceName $CloudServiceName -Slot Staging
if ($deployment.Status -ne 'Running') {
continue
}
$notReadyList = $deployment.RoleInstanceList | Where-Object InstanceStatus -ne 'ReadyRole'
if (!$notReadyList) {
break
}
$errorStatusList = @('RestartingRole';'CyclingRole';'FailedStartingRole';'FailedStartingVM';'UnresponsiveRole')
$errorList = $notReadyList | Where-Object InstanceStatus -in $errorStatusList
if ($errorList) {
throw 'Role in staging fail to start for some of these reasons:' + ($errorList | Format-List | Out-String)
}
Start-Sleep -Seconds 10
}
我对这个剧本有一些疑问。请尽力帮助我。谢谢。
Get-AzureDeployment
返回的对象类型是什么?我在Help Doc中搜索它。但是没有找到任何关于它的信息。
Running
除了Get-AzureDeployment
之外可能还有多少状态?
是否有可能永远不会在循环中中断?
感谢。
答案 0 :(得分:1)
Get-AzureDeployment返回的对象类型是什么?我搜索它 帮助文件。但是没有找到任何有关它的信息。
如documentation中所述,此操作返回 DeploymentInfoContext
类型的对象。您可以在此处找到有关此对象的更多信息:https://github.com/WindowsAzure/azure-sdk-tools/blob/master/WindowsAzurePowershell/src/Commands.ServiceManagement/Model/DeploymentInfoContext.cs。但是,如果您在此处查看Get-AzureDeployment
的源代码:https://github.com/WindowsAzure/azure-sdk-tools/blob/master/WindowsAzurePowershell/src/Commands.ServiceManagement/HostedServices/GetAzureDeployment.cs,您会注意到它返回以下内容:
return new DeploymentInfoContext(d)
{
OperationId = s.Id,
OperationStatus = s.Status.ToString(),
OperationDescription = CommandRuntime.ToString(),
ServiceName = this.ServiceName
};
除了运行Get-AzureDeployment之外,还有多少可能的状态 退货?
您可以在此处找到可能的状态列表:http://msdn.microsoft.com/en-us/library/windowsazure/ee460804.aspx。
从上面的链接复制以下内容:
是否有可能永远不会在循环中中断?
我不确定。我想你需要彻底测试它。状态可能会随着较新版本的Service Management API而改变,因此您需要确保代码涵盖所有可能的状态。
答案 1 :(得分:0)
Get-AzureDeployment返回如下所示的架构对象
SdkVersion:
RollbackAllowed:False
插槽:生产
姓名:
部署名称:[Somename]
网址:http:// [Somename] .cloudapp.net /
状态:暂停
CurrentUpgradeDomain:0
CurrentUpgradeDomainState:
UpgradeType:
RoleInstanceList:{}
配置:
DeploymentId:[SomeGUID]
标签:[Somename]
VNetName:[Somename]
DnsSettings:
OSVersion:
RolesConfiguration:{[[Somename],Microsoft.WindowsAzure.Commands.ServiceManagement.Model.RoleConfiguration]}
服务名称:[Somename]
OperationDescription:Get-AzureDeployment
OperationId:1801bce8-73b4-5a74-9e80-e03d04ff405b
OperationStatus:成功