通过addBulkVirtualGuestAccess在SoftLayer中向用户添加设备访问时的API问题

时间:2016-05-05 09:35:00

标签: json api ibm-cloud-infrastructure

我正在尝试使用SoftLayer API为测试用户分配设备。 (以下任何引用的函数由“SoftLayer_User_Customer”服务提供)

调用“addBulkVirtualGuestAccess”& “removeBulkVirtualGuestAccess”我在两种情况下都返回true。 当使用“getAllowedVirtualGuestIds”时,在执行之前引用的函数之前和之后,我返回一个空数组。测试用户最初不包含任何服务器访问,因此这是预期的,但是在执行“addBulkVirtualGuestAccess”调用后不会出现这种情况。

根据文档,只有在用户无法使用该设备的情况下才能返回true,或者当用户无法使用该设备时,才能返回true。有可能我提供的JSON正文不合适,如果是这种情况,请告诉我。

等效curl命令:

echo'{“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。

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

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

  • addBulkVirtualGuestAccess

如果没有将设备添加到适当的用户权限,则返回true。这是误导性的,我希望能够返回用户权限异常。

  • addVirtualGuestAccess

可用于在没有“VIRTUAL_GUEST_VIEW”权限的情况下将VM单独添加到用户。 getAllowedVirtualGuestIds完成此操作后将不返回任何ID,但是getVirtualGuests将返回单独添加的VM的完整映像JSON数据,ID可以从那里外推。

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

  • 为此服务的未来用户提供帮助:

    1. 上面列出的一些意想不到的行为 可以解释addVirtualGuestAccess方法吗?
    2. 可以更新addBulkVirtualGuestAccess方法以返回 例如,如果用户因为a而未真正添加设备 用户权限问题?
    3. SoftLayer API参考页面不会引用用户 应用某个设备所需的权限,也许这应该 更新以显示此内容?

此致

Paul Connolly

1 个答案:

答案 0 :(得分:1)

请验证您要添加服务器访问权限的用户是否具有以下”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