SoftLayer_User_Customer :: Программный слой GetObject не выполнен с исключением - PullRequest
0 голосов
/ 23 мая 2018

Когда я вызываю метод service.GetObject (), он возвращает исключение Softlayer.Может кто-нибудь помочь мне, что я сделал не так.

sess := session.New(s.UserName, s.Apikey)

service := services.GetUserCustomerService(sess)
user, err := service.GetObject()

enter image description here

Ответы [ 2 ]

0 голосов
/ 28 мая 2018

Я могу предложить вам использовать 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))
}

bcr06 означает, что подсеть имеет соединение через внутреннюю сеть (частную) pod06.

Ответ выглядит примерно так:

"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"
0 голосов
/ 23 мая 2018

Ошибка, которую вы получили, потому что вам нужно использовать идентификатор пользователя.

Добавьте этот userId к вашему коду, как в следующем примере:

   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()

Ссылка:

https://softlayer.github.io/reference/services/SoftLayer_User_Customer/getObject/

Если вы хотите получить конкретный идентификатор вашей учетной записи, используйте следующий пример кода перехода: вы должны указать свое имя пользователя в фильтре объектов ¨ Eq («set me») ¨чтобы получить конкретный идентификатор пользователя.

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))
}
...