2017-03-28 46 views
0

我们收到了关于计划迁移到新的虚拟机管理程序的通知,提及我们可以在SL Portal或通过API执行此类迁移。SoftLayer API:将服务器迁移到新的Xen

问:如何通过API调用来迁移服务器:

  • REST

  • slcli调用的API方法

通知我们收到:

IBM Bluemix正在扩展“hot patching”功能适用于所有地点的VSI(虚拟服务器实例)。通过热补丁,IBM Bluemix虚拟服务器团队可以将多个软件和安全修补程序应用于虚拟机主机,而不会在主机重新启动时中断客户机工作负载。

为客户提供灵活性,客户将能够自我之前,或者通过API或UI迁移窗口迁移,如下所述:

要自行迁移虚拟服务器,进入“设备列表” ,可在Control Portal顶部的“设备”下找到,然后选择“操作”。 “迁移主机”应该是可选的(取决于容量)。

回答

1

使用REST你可以使用这个请求:

https://$USERNAME:[email protected]/rest/v3/SoftLayer_Virtual_Guest/$VSIID/migrate 

Note: replace $USERNAM , $APIKEY and $VSIID 

问候

+0

感谢来完成,这个工程。 –

+0

SoftLayer_Virtual_Guest/$ VSIID /迁移呼叫作品, ' - 当服务器已准备就绪,呼吁/迁移不迁移 - 当服务器已迁移 - 我的错误,这是正常情况 ' **是否有任何机会检查在特定的VS是否有资格进行迁移而不实际(迁移)重新启动它?** –

+0

VS有一个名为pendingMigrationFlag的属性,如果此标志设置为false,则不需要迁移它,您可以像这样获取它SoftLayer_Virtual_Guest/$ VSIID /的getObject?objectMask =掩模[pendingMigrationFlag] –

1

这是我们使用的是由一个可将虚拟机迁移一个什么样的脚本。

您可以使用此命令slcli virtual list --columns id,hostname,pendingMigrationFlag | grep True和实际迁移列表可迁移的虚拟机可以使用此slcli call-api Virtual_Guest migrate "--id=$VSID"

#!/bin/bash 

TYPE=${1:-server} 

while :; do 
    VSID=`slcli virtual list --columns id,hostname,pendingMigrationFlag | grep "$TYPE" | grep True | head -1 | cut -d ' ' -f1`; 
    if [[ -n "$VSID" ]]; then 
    echo "Next item to migrate: $VSID" 
    slcli vs detail "$VSID" 
    slcli call-api Virtual_Guest migrate "--id=$VSID" 
    if [[ "$?" -eq "0" ]]; then 
     echo "Waiting for the migration to complete..." 
     while :; do 
     sleep 5 
     STATE=`slcli vs detail "$VSID" | grep active_transaction | awk '{print $2}'` 
     if [ "$STATE" = "NULL" ]; then 
      echo "Migration finished" 
      break 
     else 
      echo "Current state: $STATE" 
     fi 
     done 
    fi 
    else 
    echo "No vs found to migrate" 
    break 
    fi 
done