VDI调整大小api不起作用

时间:2013-01-13 10:11:41

标签: php api sdk xen

我正在使用Php开发Xen管理Web应用程序。 VDI(虚拟磁盘映像)重命名API和调整API使用大小非常相似。我没有成功调整VDI的大小。你认为我在这里做错了吗?

重命名功能:

function xenapi_set_vdi_name($session, $ref, $name)
{
    $conn = $session[0];
    $sess = new xmlrpcval($session[1]);
    $vdi = new xmlrpcval($ref);
    $name = new xmlrpcval($name);
    $msg = new xmlrpcmsg("VDI.set_name_label", array($sess, $vdi, $name));

    $res = $conn->send($msg);

    if ($res->faultcode())
        return false;
    $val = $res->value();
    $status = $val->structmem("Status");
    if ($status->scalarval() != "Success")
        return false;

    $value = $val->structmem("Value");
    return $value->scalarval();
}

重命名工作用法:

...
xenapi_set_vdi_name($session, $vdi, "NewNameToMyVDI");
...

调整大小功能:

function xenapi_set_vdi_virtual_size($session, $ref, $size)
{
    $conn = $session[0];
    $sess = new xmlrpcval($session[1]);
    $vdi = new xmlrpcval($ref);
    $size = new xmlrpcval($size);
    $msg = new xmlrpcmsg("VDI.set_virtual_size", array($sess, $vdi, $size));

    $res = $conn->send($msg);

    if ($res->faultcode())
        return false;
    $val = $res->value();
    $status = $val->structmem("Status");
    if ($status->scalarval() != "Success")
        return false;

    $value = $val->structmem("Value");
    return $value->scalarval();
}

无法正常使用调整大小:

...
$size = '27011707392';
settype($size, "integer");
xenapi_set_vdi_virtual_size($session, $vdi, $size);
...

新大小值适用于物理服务器上的XEN命令:

xe vdi-resize uuid="91fe671c-93e1-4162-8128-96fedc3c215c" disk-size="27011707392"

1 个答案:

答案 0 :(得分:0)

为了完整性:这个问题是重复的(见下面的链接)并报告已成功解决,所以我在这里粘贴了我的答案。

问题: VDI resizing api does not work

答案: 快速浏览一下:http://xen.org/files/XenCloud/ocamldoc/apidoc.html?c=VDI

我认为你应该尝试使用“调整大小”或“调整在线大小”方法而不是“设置虚拟大小”。

使用“调整大小”方法报告成功。