天蓝色部署的状态可以是多少

时间:2014-01-02 08:33:55

标签: powershell azure cmdlets

全部,我正在尝试将我的云服务部署到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
}

我对这个剧本有一些疑问。请尽力帮助我。谢谢。

  1. Get-AzureDeployment返回的对象类型是什么?我在Help Doc中搜索它。但是没有找到任何关于它的信息。

  2. Running除了Get-AzureDeployment之外可能还有多少状态?

  3. 是否有可能永远不会在循环中中断?

  4. 感谢。

2 个答案:

答案 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

从上面的链接复制以下内容:

enter image description here

  

是否有可能永远不会在循环中中断?

我不确定。我想你需要彻底测试它。状态可能会随着较新版本的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:成功