我们收到了有关计划迁移到新虚拟机管理程序的通知,提到我们可以在SL Portal中或通过API执行此类迁移。
问:如何通过API调用迁移服务器:
REST
slcli call-api method
我们收到的通知:
IBM Bluemix正在为所有位置的VSI(虚拟服务器实例)扩展“热补丁”功能。热补丁允许IBM Bluemix Virtual Server团队将许多软件和安全补丁应用于虚拟机主机,而不会在主机重新启动时中断客户端工作负载。
为了提供灵活性,客户端将能够在迁移窗口之前通过API或UI进行自我迁移,如下所示:
要自我迁移虚拟服务器,请转到“设备列表”,该设备列表位于Control Portal顶部的“设备”下,然后选择“操作”。应该可以选择“迁移主机”(取决于容量)。
答案 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