go - 使用 SoftLayer API 时掩码和过滤器不起作用

标签 go ibm-cloud ibm-cloud-infrastructure

当我将 billingItemFlag 添加到我的掩码并进行过滤时,结果中缺少它。我正在使用 SoftLayer-go api 来自 SoftLayer GitHub帐户。我的过滤器或面具错了吗?

请考虑以下代码:

const mask string = "id;hostname;domain;billingItemFlag;billingItem"
var filters = filter.Build(
    filter.Path("billingItemFlag").NotNull(),
    filter.Path("billingItem").NotNull(),
)
accountService := services.GetAccountService(softlayerSession)
hardware, err := accountService.Filter(filters).Mask(mask).Limit(1).GetHardware()
if err != nil {
    panic(err)
}
println(hardware[0].BillingItemFlag)

这段代码的结果是“0x0”,这是一个无效的内存地址。

当我启用调试时,我可以看到没有返回字段,但返回域、主机名和其他字段。

2018/02/17 11:08:08 ->>>Request:
2018/02/17 11:08:08 POST /xmlrpc/v3.1/SoftLayer_Account HTTP/1.1
Host: api.softlayer.com
User-Agent: Go-http-client/1.1
Content-Length: 1875
Content-Type: text/xml
Accept-Encoding: gzip

<?xml version="1.0" encoding="UTF-8"?><methodCall><methodName>getHardware</methodName><params><param><value><struct><member><name>headers</name><value><struct><member><name>User-Agent</name><value><string>softlayer-go/v0.1.0-alpha (go1.9.2;amd64;darwin)</string></value></member><member><name>authenticate</name><value><struct><member><name>username</name><value><string>REMOVED</string></value></member><member><name>apiKey</name><value><string>REMOVED</string></value></member></struct></value></member><member><name>SoftLayer_AccountObjectMask</name><value><struct><member><name>mask</name><value><struct><member><name>hostname</name><value><array><data></data></array></value></member><member><name>domain</name><value><array><data></data></array></value></member><member><name>billingItemFlag</name><value><array><data></data></array></value></member><member><name>billingItem</name><value><struct><member><name>recurringFee</name><value><array><data></data></array></value></member></struct></value></member><member><name>id</name><value><array><data></data></array></value></member></struct></value></member></struct></value></member><member><name>SoftLayer_AccountObjectFilter</name><value><struct><member><name>billingItem</name><value><struct><member><name>operation</name><value><string>not null</string></value></member></struct></value></member><member><name>billingItemFlag</name><value><struct><member><name>operation</name><value><string>not null</string></value></member></struct></value></member></struct></value></member><member><name>resultLimit</name><value><struct><member><name>limit</name><value><int>1</int></value></member><member><name>offset</name><value><int>0</int></value></member></struct></value></member></struct></value></member></struct></value></param></params></methodCall>
2018/02/17 11:08:09 

<<<-Response:
2018/02/17 11:08:09 HTTP/1.1 200 OK
Connection: close
Cache-Control: private
Content-Type: text/xml
Date: Sat, 17 Feb 2018 16:08:08 GMT
Ntcoent-Length: 3031
Server: Apache
Softlayer-Total-Items: 402
Vary: Accept-Encoding
X-Frame-Options: SAMEORIGIN

<?xml version="1.0" encoding="utf-8"?>
<params>
<param>
 <value>
  <struct>
   <member>
    <name>accountId</name>
    <value>
     <int>REMOVED</int>
    </value>
   </member>
   <member>
    <name>bareMetalInstanceFlag</name>
    <value>
     <int>0</int>
    </value>
   </member>
   <member>
    <name>domain</name>
    <value>
     <string>REMOVED</string>
    </value>
   </member>
   <member>
    <name>fullyQualifiedDomainName</name>
    <value>
     <string>REMOVED</string>
    </value>
   </member>
   <member>
    <name>hardwareStatusId</name>
    <value>
     <int>5</int>
    </value>
   </member>
   <member>
    <name>hostname</name>
    <value>
     <string>REMOVED</string>
    </value>
   </member>
   <member>
    <name>id</name>
    <value>
     <int>REMOVED</int>
    </value>
   </member>
   <member>
    <name>manufacturerSerialNumber</name>
    <value>
     <string>REMOVED</string>
    </value>
   </member>
   <member>
    <name>notes</name>
    <value>
     <string/>
    </value>
   </member>
   <member>
    <name>provisionDate</name>
    <value>
     <stringREMOVED</string>
    </value>
   </member>
   <member>
    <name>serialNumber</name>
    <value>
     <string> REMOVED</string>
    </value>
   </member>
   <member>
    <name>serviceProviderId</name>
    <value>
     <int>1</int>
    </value>
   </member>
   <member>
    <name>serviceProviderResourceId</name>
    <value>
     <string/>
    </value>
   </member>
   <member>
    <name>globalIdentifier</name>
    <value>
     <string> REMOVED </string>
    </value>
   </member>
   <member>
    <name>networkManagementIpAddress</name>
    <value>
     <string>1 REMOVED 0</string>
    </value>
   </member>
   <member>
    <name>primaryBackendIpAddress</name>
    <value>
     <string> REMOVED 4</string>
    </value>
   </member>
   <member>
    <name>primaryIpAddress</name>
    <value>
     <string> REMOVED </string>
    </value>
   </member>
   <member>
    <name>privateIpAddress</name>
    <value>
     <string> REMOVED</string>
    </value>
   </member>
   <member>
    <name>hardwareFunction</name>
    <value>
     <struct>
      <member>
       <name>code</name>
       <value>
        <string>WEBSVR</string>
       </value>
      </member>
      <member>
       <name>description</name>
       <value>
        <string>Web Server</string>
       </value>
      </member>
      <member>
       <name>id</name>
       <value>
        <int>3</int>
       </value>
      </member>
     </struct>
    </value>
   </member>
   <member>
    <name>hardwareStatus</name>
    <value>
     <struct>
      <member>
       <name>id</name>
       <value>
        <int>5</int>
       </value>
      </member>
      <member>
       <name>status</name>
       <value>
        <string>ACTIVE</string>
       </value>
      </member>
     </struct>
    </value>
   </member>
  </struct>
 </value>
</param>
</params>

最佳答案

您发布的代码在使用默认端点或任何其他 REST 端点时有效。这似乎是 API 的问题,我建议切换到默认端点或使用:

https://api.softlayer.com/rest/v3.1

关于go - 使用 SoftLayer API 时掩码和过滤器不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48843367/

相关文章:

java - 在 Bluemix 上运行 Spring Boot 应用程序时出错

python - Softlayer API : How to do image capture with specify certain data disk?

go - 如何添加对象掩码以使用 golang 调用 GetNetworkVlans

go - 处理字符串编码的库/包?

go - 如何将带有映射属性的基于结构的类型保存到 mongodb 中

javascript - 无法使用适用于 JavaScript 的 Eclipse PAHO MQTT 库连接到 IBM Watson IoT Platform

python - 如何使用 Python API 检索与帐户关联的所有许可证

go - 避免在 "Go run"-ng 时键入主包中的所有 go 文件

go - 无法分配给 map 中的结构字段

python - IBM-VisualRecognitionV3-DeprecationWarning : VisualRecognitionV3 is a deprecated function