2016-09-13 30 views
0

UPDATE:感谢Ruber的帮助,当使用Legacy Object Mask查询关系属性时,已确定发生此问题。这是意外的行为,并且已经在SoftLayer中升级以进行修复。 '修复'Ruber建议升级并使用SoftLayer提供的Object Mask的newer style关系属性所需的SoftLayer权限

我正在通过PHP使用SoftLayer SOAP API v3 SoftLayer_Hardware_Server::getObject()方法来查询billingItem - >package关系属性时调试遇到的问题。我的直觉告诉我,这可能与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需要一定的权限集 - >packagebillingItem - >upgradeItems?如果是这样,他们是什么?另外,有没有一个列表或答案“如果我想查询x propery,我需要y权限”

预先感谢您!

回答

0

没有,可以让得到的关系属性,例如billingItem任何权限 - >包装billingItem - > upgradeItems

你只需要“查看硬件详细信息”启用许可和 访问设备

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

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

请让我知道,如果你不能够获得包信息,如果你是继续面临这个问题,请你能提供更多的信息,您使用的,什么是能够完全屏蔽你期待。此外,服务器的标识符可能对进一步调查有用。

目前不存在可用于权限和其操作的文件,但你可以用下面的方法:

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

+0

您好Ruber - 您是否可以访问SoftLayer票务系统?我会从我们的帐户打开一张票,向您传递身份证和其他详细信息。此时,我们怀疑它不是许可,但是我们没有为我们帐户中的旧服务器获取“包”对象,但是较新的服务器确实会返回此信息。假设您可以在SoftLayer门户中查看门票,我将提供所有详细信息:) – Esrahaddon

+0

是的,我有权访问SoftLayer票务系统,您可以提供票证的标识符,我会看一看 –

+0

真棒,谢谢!门票标识是35435429 – Esrahaddon