【发布时间】:2017-01-21 14:05:37
【问题描述】:
更新:感谢 Ruber 的帮助,已确定在使用 Legacy Object Mask 查询关系属性时会出现此问题。这是意外行为,已在 SoftLayer 中升级以进行修复。 Ruber 建议的“修复”是升级并使用 Object Mask SoftLayer 提供的 newer style。
我正在调试通过 PHP 使用 SoftLayer SOAP API v3 SoftLayer_Hardware_Server::getObject() 方法查询 billingItem->package 关系属性时遇到的问题。我的直觉告诉我,这可能与 API 用户权限有关,因为这段代码从大约 2010 年到大约 2 个月前一直在生产环境中工作,而我们的 API 用户权限似乎会以某种频率发生变化。
下面是我们用来查询这些关系属性的代码的 sn-p,删除了一些专有位:
$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 或 billingItem->upgradeItems 之类的关系属性是否需要特定的权限集?如果是这样,它们是什么?另外,是否有一个列表或图表可以回答 “如果我想查询 x 属性,我需要 y 权限”?
提前谢谢你!
【问题讨论】:
标签: php ibm-cloud-infrastructure