SoftLayer API:将服务器迁移到新的Xen

时间:2017-03-28 08:45:30

标签: ibm-cloud-infrastructure

我们收到了有关计划迁移到新虚拟机管理程序的通知,提到我们可以在SL Portal中或通过API执行此类迁移。

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

  • REST

  • slcli call-api method

我们收到的通知:

  

IBM Bluemix正在为所有位置的VSI(虚拟服务器实例)扩展“热补丁”功能。热补丁允许IBM Bluemix Virtual Server团队将许多软件和安全补丁应用于虚拟机主机,而不会在主机重新启动时中断客户端工作负载。

     

为了提供灵活性,客户端将能够在迁移窗口之前通过API或UI进行自我迁移,如下所示:

     

要自我迁移虚拟服务器,请转到“设备列表”,该设备列表位于Control Portal顶部的“设备”下,然后选择“操作”。应该可以选择“迁移主机”(取决于容量)。

2 个答案:

答案 0 :(得分:1)

使用休息,您可以使用此请求:

https://$USERNAME:$APIKEY@api.softlayer.com/rest/v3/SoftLayer_Virtual_Guest/$VSIID/migrate

Note: replace $USERNAM , $APIKEY and $VSIID

此致

答案 1 :(得分:1)

这是我们用于逐个迁移VM的脚本。

您可以使用此命令slcli virtual list --columns id,hostname,pendingMigrationFlag | grep True列出可迁移的VM,并且可以使用此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