我正在尝试使用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的类似方法有意想不到的行为:
如果没有将设备添加到适当的用户权限,则返回true。这是误导性的,我希望能够返回用户权限异常。
可用于在没有“VIRTUAL_GUEST_VIEW”权限的情况下将VM单独添加到用户。 getAllowedVirtualGuestIds完成此操作后将不返回任何ID,但是getVirtualGuests将返回单独添加的VM的完整映像JSON数据,ID可以从那里外推。
我花了很多时间调试上面的内容,我很高兴终于解决了。
为此服务的未来用户提供帮助:
此致
Paul Connolly
答案 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