API 通过 addBulkVirtualGuestAccess 在 SoftLayer 中向用户添加设备访问权限时出现问题

API Issue While Adding Device Access to a User in SoftLayer via addBulkVirtualGuestAccess

我正在尝试使用 SoftLayer API 为测试用户分配对设备的访问权限。 (以下任何参考功能均由 "SoftLayer_User_Customer" 服务提供)

当调用 "addBulkVirtualGuestAccess" 和 "removeBulkVirtualGuestAccess" 时,我 return 在这两种情况下都是正确的。 使用 "getAllowedVirtualGuestIds" 时,在执行之前引用的函数之前和之后,我被 returned 一个空数组。测试用户最初不包含任何服务器访问权限,因此这是预期的,但是在执行 "addBulkVirtualGuestAccess" 调用后并不预期。

根据文档,只有在该用户已经可以访问该设备的情况下,或者当用户无法使用该设备时,才应为 true returned。有可能我提供的 JSON body 不合适,如果是这种情况,请告诉我。

等效的 curl 命令:

回声 '{"parameters":[[X,Y]]}' | curl -X POST -u $USERNAME:$KEY --data @- https://api.softlayer.com/rest/v3/SoftLayer_User_Customer/Z/addBulkVirtualGuestAccess.json

其中 X 和 Y 是设备整数 ID 值,Z 是要添加用户的 SoftLayer 用户 ID。

如有任何帮助,我们将不胜感激。

============================================= ============================ 更新

看来我无法创建评论来满足我的回复长度要求,所以我将改为编辑我的答案。

谢谢你的回复,mcruz。

您的建议似乎有效,似乎用户需要权限 "VIRTUAL_GUEST_VIEW" 才能通过 addBulkVirtualGuestAccess 函数添加设备。

但是需要注意的是,同一服务的类似方法User_Customer,有意想不到的行为:

Returns 当没有设备被添加到应有的用户权限时为真。这是误导,我希望用户权限异常被 returned.

可用于在没有 "VIRTUAL_GUEST_VIEW" 权限的情况下向用户单独添加 VM。 getAllowedVirtualGuestIds 完成后将 return 没有 ID,但是 getVirtualGuests 将 return 单独添加 VM 的完整图像 JSON 数据,可以从那里推断 ID。

我花了很多时间调试上面的问题,很高兴终于解决了。

此致,

保罗·康诺利

请验证您要添加服务器访问权限的用户是否具有以下 ”permissions””View Virtual Server Details” 要添加此权限,请执行:

https://[username]:[apikey]@api.softlayer.com/rest/v3/SoftLayer_User_Customer/[user_id]/addPortalPermission
Method: POST
{
  "parameters": [
    {
      "keyName": "VIRTUAL_GUEST_VIEW"
    }
  ]
}

要获得所有可用权限,请查看:SoftLayer_User_Customer_CustomerPermission_Permission::getAllObjects

现在,在审核以上权限可用后,请执行:

https://[username]:[apikey]@api.softlayer.com/rest/v3/SoftLayer_User_Customer/[user_id]/addBulkVirtualGuestAccess
Method: POST

Json Payload:

{
  "parameters": [
    [
        18131945,
        17071523

    ]
  ]
}

可以看到执行时会显示设备:

https://[username]:[apikey]@api.softlayer.com/rest/v3/SoftLayer_User_Customer/[user_id]/getAllowedVirtualGuestIds