首页 > 解决方案 > softlayer-go 对象掩码未获取快照容量

问题描述

我正在尝试获取SnapshotCapacityGb关系数据类型。这是我所拥有的:

package main

import (
        "fmt"
        "github.com/softlayer/softlayer-go/session"
        "github.com/softlayer/softlayer-go/services"
        "github.com/softlayer/softlayer-go/filter"
        "encoding/json"
)

func main() {
    sess := session.New("XXXXXXXX", "XXXXXX")
    accountService := services.GetAccountService(sess)
    filters := filter.New(
        filter.Path("networkStorage.id").Eq(39283541),
    )
     result, err :=  accountService.Mask("id;capacityGb;snapshotCapacityGb").Filter(filters.Build()).GetNetworkStorage()
     fmt.Println(err)
    // 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))    
}

但这会打印所有默认属性(id、capacityGB)并跳过关系数据类型(snapshotCapacityGb)。没有看到关系数据类型的任何原因?

当我使用 rest api 时同样有效 https://{{sluser}}:{{slkey}}@api.softlayer.com/rest/v3.1/SoftLayer_Account/getNetworkStorage/39283541/getObject?objectMask=id;snapshotCapacityGb;capacityGb

我在 Ubuntu VERSION="14.04.5 LTS,Trusty Tahr"

标签: ibm-cloud-infrastructure

解决方案


某些网络存储设备没有快照,因此响应中不存在snapshotCapacityGb值或者它为空。由于您可以使用 REST 检索该值,因此 go-client 可能正在使用 XML-RPC 端点,因此我建议尝试使用 REST 端点:

endpoint := "https://api.softlayer.com/rest/v3"

sess := session.New(username, apikey, endpoint)

推荐阅读