更新:感谢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权限”?
提前谢谢!
答案 0 :(得分:0)
没有任何权限可以允许获取关系属性,例如 billingItem - >包或 billingItem - > upgradeItems 强>
您只需启用“查看硬件详细信息”权限即可 访问设备
无论如何,你能试试这个面具吗?
$objectMask->billingItem -> package;
$objectMask->billingItem -> upgradeItems;
请告诉我,如果您无法获得包裹信息,如果您继续遇到此问题,请提供更多信息,您正在使用的确切面具以及您的期望。此外,服务器的标识符可用于进一步调查。
没有可用于权限及其操作的文档,但您可以使用以下方法:
它将显示所有可用权限,名称描述了它们允许的操作