2017-03-28 47 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