Api SoftLayer\u User\u Customer::GetObject SoftLayer失败,出现异常
当我调用service.GetObject()方法时,它将返回Softlayer 例外 谁能帮我找出我做错了什么Api SoftLayer\u User\u Customer::GetObject SoftLayer失败,出现异常,api,ibm-cloud-infrastructure,Api,Ibm Cloud Infrastructure,当我调用service.GetObject()方法时,它将返回Softlayer 例外 谁能帮我找出我做错了什么 sess := session.New(s.UserName, s.Apikey) service := services.GetUserCustomerService(sess) user, err := service.GetObject() 出现的错误是因为需要使用用户ID标识符 将此用户ID添加到you go代码中,如以下示例所示: userId := 11111
sess := session.New(s.UserName, s.Apikey)
service := services.GetUserCustomerService(sess)
user, err := service.GetObject()
出现的错误是因为需要使用用户ID标识符 将此用户ID添加到you go代码中,如以下示例所示:
userId := 11111
// Create a session
sess := session.New(username, apikey)
// Get SoftLayer_User_Customer service
service := services.GetUserCustomerService(sess)
result, err := service.Id(userId).GetObject()
参考:
如果要获取帐户的特定用户ID,请使用以下go代码示例:
您必须将您的用户名放入对象过滤器–Eq(“设置我”)–以获取特定的用户名
package main
/*
GetUsers
Retrieve an account’s portal users.
Important manual pages:
https://softlayer.github.io/reference/services/SoftLayer_Account/
https://softlayer.github.io/reference/services/SoftLayer_Account/getUsers/
License: http://sldn.softlayer.com/article/License
Author: SoftLayer Technologies, Inc. <sldn@softlayer.com>
*/
import (
"fmt"
"github.com/softlayer/softlayer-go/services"
"github.com/softlayer/softlayer-go/session"
"encoding/json"
"github.com/softlayer/softlayer-go/filter"
)
func main() {
// SoftLayer API username and key
username := "set me"
apikey := "set me"
filter := filter.Build(
filter.Path("users.username").Eq("set me"),
)
mask := "id"
// Create a session
sess := session.New(username, apikey)
// Get SoftLayer_Account service
service := services.GetAccountService(sess)
result, err := service.Mask(mask).Filter(filter).GetUsers()
if err != nil {
fmt.Printf("\n Unable to retrieve User:\n - %s\n", err)
return
}
// Following helps to print the result in json format.
jsonFormat, jsonErr := json.MarshalIndent(result,""," ")
if jsonErr != nil {
fmt.Println(jsonErr)
return
}
fmt.Println(string(jsonFormat))
}
主程序包
/*
GetUsers
检索帐户的门户用户。
重要手册页:
https://softlayer.github.io/reference/services/SoftLayer_Account/
https://softlayer.github.io/reference/services/SoftLayer_Account/getUsers/
许可证:http://sldn.softlayer.com/article/License
作者:SoftLayer Technologies,Inc。
*/
进口(
“fmt”
“github.com/softlayer/softlayer go/services”
“github.com/softlayer/softlayer go/session”
“编码/json”
“github.com/softlayer/softlayer go/filter”
)
func main(){
//SoftLayer API用户名和密钥
用户名:=“设置我”
apikey:=“设置我”
过滤器:=过滤器。生成(
filter.Path(“users.username”).Eq(“set me”),
)
掩码:=“id”
//创建会话
sess:=session.New(用户名,apikey)
//获取SoftLayer\u帐户服务
服务:=services.GetAccountService(sess)
结果,错误:=service.Mask(Mask).Filter(Filter).GetUsers()
如果错误!=零{
fmt.Printf(“\n无法检索用户:\n-%s\n”,错误)
回来
}
//以下内容有助于以json格式打印结果。
jsonFormat,jsonErr:=json.marshallindent(结果为“”,“”)
如果jsoner!=nil{
fmt.Println(JSONER)
回来
}
fmt.Println(字符串(jsonFormat))
}
我建议您使用primaryRouter.hostname而不是podName,过滤器如下所示:
package main
/*
GetPrivateSubnets
Retrieve all private subnets associated with an account.
Important manual pages:
https://softlayer.github.io/reference/services/SoftLayer_Account/
https://softlayer.github.io/reference/services/SoftLayer_Account/getPrivateSubnets/
License: http://sldn.softlayer.com/article/License
Author: SoftLayer Technologies, Inc. <sldn@softlayer.com>
*/
import (
"fmt"
"github.com/softlayer/softlayer-go/services"
"github.com/softlayer/softlayer-go/session"
"encoding/json"
"github.com/softlayer/softlayer-go/filter"
)
func main() {
// SoftLayer API username and key
username := "set me"
apikey := "set me"
mask := "mask[podName,datacenter[name],networkVlan]"
filter := filter.Build( filter.Path("privateSubnets.datacenter.name").Eq("dal09"),
filter.Path("privateSubnets.networkVlan.primaryRouter.hostname").Contains("bcr06"),
)
// Create a session
sess := session.New(username, apikey)
// Get SoftLayer_Account service
service := services.GetAccountService(sess)
result, err := service.Mask(mask).Filter(filter).GetPrivateSubnets()
if err != nil {
fmt.Printf("\n Unable to retrieve the private subnets:\n - %s\n", err)
return
}
// Following helps to print the result in json format.
jsonFormat, jsonErr := json.MarshalIndent(result,""," ")
if jsonErr != nil {
fmt.Println(jsonErr)
return
}
fmt.Println(string(jsonFormat))
}
"datacenter": {
"name": "dal09"
},
"networkVlan": {
"id": 111333322,
"modifyDate": "2016-09-14T13:24:10-04:00",
"primarySubnetId": 1225544,
"vlanNumber": 111,
"primaryRouter": {
"domain": "softlayer.com",
"fullyQualifiedDomainName": "bcr06a.dal09.softlayer.com",
"hostname": "bcr06a.dal09",
}
},
"podName": "dal09.pod06"
非常感谢你的帮助。。我有一个小问题,你们在过滤器中发现了什么?我使用了“users.username”,如果有多个条件,我将如何使用?为我提供以下代码示例掩码的帮助:=“mask[podName,account[id],datacenter[name]]”过滤器:=filter.Build(filter.Path(“subnet.podName”).Eq(s.podName),)首先从您使用的方法中必须看到的过滤器开始是不起作用的。在本例中,我们使用的是方法“getUsers”,这就是为什么过滤器应该从“users”开始。它是通过删除值“get”来完成的,然后将添加您想要从中获取信息的属性,如“users.username”。对于多次情况也是如此。请参阅以下文档:如何过滤关系数据。我已经做了掩蔽..如掩蔽:=“掩蔽[podName,帐户[id],数据中心[name]]”…但我仍然无法过滤数据我对此进行了更多调查,您的过滤器应该可以工作,因为属性podName在数据库中,尝试使用您的过滤器我也遇到了错误,因此这是一个问题,您可以在此页面上报告此问题:。本地和关系数据适用于筛选器,请参阅以下文档:。我尝试了对象掩码,它在我的示例代码中起作用。什么是“bcr06”,如果我只知道podname和数据中心名称–podname¨=dal09.pod06=Dallas 9,Pod 6(即bcr06),如何获取值。您可以看到以下文档:我建议使用此方法检索有关SoftLayer中Pod的信息。它将返回一个SoftLayer_Network_Pod数组,该数组的数据类型比@F.Ojeda之前评论的数据类型要多