关系属性需要SoftLayer权限

时间:2016-09-13 21:10:02

标签: php ibm-cloud-infrastructure

更新:感谢Ruber的帮助,我们已确定在使用Legacy Object Mask查询关系属性时会出现此问题。这是非预期的行为,并已在SoftLayer中升级以进行修复。 'fix'Ruber建议升级并使用Object Mask SoftLayer提供的newer style

我正在调试使用PHP上的SoftLayer SOAP API v3 billingItem方法查询package - > SoftLayer_Hardware_Server::getObject()关系属性时遇到的问题。我的直觉告诉我,这可能与API用户权限有关,因为此代码自2010年左右开始生产至大约2个月前,而我们的API用户权限似乎在某种程度上发生变化。

下面是我们用来查询这些关系属性的代码片段,删除了一些专有位:

$client = getSoapClient("Hardware_Server");
$init = new stdClass();
$init->id = some_id_here;
$objectMask = new SoftLayer_ObjectMask();
$objectMask->operatingSystem->partitionTemplates->partitionTemplatePartition;
$objectMask->billingItem->package->items->prices->categories;
$objectMask->hardDrives;
$client->setObjectMask($objectMask);
$client->setInitParameters($init);
$data = $client->getObject();

如果我检查请求和响应数据,我可以看到billingItem以及billingItem - > package对象被请求,但是package对象是回复中缺少。尝试检索其他看似与销售相关的项目,例如billingItem - > upgradeItems也会返回一个空数组。

我向SoftLayer(或之前遇到此问题的人)提出的问题是:查询关系属性是否需要一组特定权限,例如billingItem - > package或{{1} } - GT; billingItem?如果是这样,他们是什么?此外,是否有一个列表或图表来回答“如果我想查询x propery,我需要y权限”

提前谢谢!

1 个答案:

答案 0 :(得分:0)

没有任何权限可以允许获取关系属性,例如 billingItem - >包 billingItem - > upgradeItems

  

您只需启用“查看硬件详细信息”权限即可   访问设备

无论如何,你能试试这个面具吗?

$objectMask->billingItem -> package;
$objectMask->billingItem -> upgradeItems;

请告诉我,如果您无法获得包裹信息,如果您继续遇到此问题,请提供更多信息,您正在使用的确切面具以及您的期望。此外,服务器的标识符可用于进一步调查。

没有可用于权限及其操作的文档,但您可以使用以下方法:

它将显示所有可用权限,名称描述了它们允许的操作