ibm-cloud-infrastructure - SoftLayer API 在调用 setUserMetadata 时返回 SoftLayer_Exception_NotImplemented
问题描述
我遇到了返回 SoftLayer_Exception_NotImplemented 的 500 错误。
SoftLayer_Exception_NotImplemented: SoftLayer_Virtual_Guest_Strategy_Behavior_Standard::setUserMetadata is not implemented. (HTTP 500)
它发生在我调用 createObject 后设置用户元数据时。并且此虚拟机在“设置供应配置”中保持“停止”状态。我只是等了大约 30 秒才重试。所以我编程了 60 秒暂停。这个值可以吗?
解决方案
这里报告了同样的错误IBM Cloud Infrastructure cli error - setUserMetadata is not implemented
这是一个如何使用 REST 调用setUserMetadata的示例:
POST: https://api.softlayer.com/rest/v3/SoftLayer_Virtual_Guest/[vmID]/setUserMetadata
BODY:
{
"parameters":[
[
"value1"
]
]
}
我无法重现错误,我等了 50 秒才运行以下 softlayer-go 示例,并且元数据设置成功:
virtualService := services.GetVirtualGuestService(sess)
metadata := []string{"value1"}
result, err := virtualService.Id(11122233).SetUserMetadata(metadata)
if err != nil {
fmt.Printf("\n Unable to set user metadata:\n - %s\n", err)
return
}
// If true prints the user data
if result == true {
udata, err := virtualService.Id(11122233).GetUserData()
if err != nil {
fmt.Printf("\n Unable retrieve user data:\n - %s\n", err)
return
}
jsonFormat, jsonErr := json.MarshalIndent(udata, "", " ")
if jsonErr != nil {
fmt.Println(jsonErr)
return
}
fmt.Println(string(jsonFormat))
输出:
[
{
"type": {
"keyname": "USER_DATA",
"name": "User Data"
},
"value": "value1"
}
]
以下是我打电话后得到的回应/rest/v3.1/SoftLayer_Resource_Metadata/getUserMetadata
root@example:~# curl -i https://api.service.softlayer.com/rest/v3.1/SoftLayer_Resource_Metadata/getUserMetadata
HTTP/1.1 200 OK
Date: Wed, 25 Jul 2018 15:12:21 GMT
Server: Apache
X-Frame-Options: SAMEORIGIN
Content-Length: 8
Vary: Accept-Encoding
Connection: close
Content-Type: application/json
Strict-Transport-Security: max-age=31536000
"value1"
我关闭了 VM(Halted),我还能够设置一个新的元数据,我不确定你是如何得到这个错误的。
我建议您在创建 VM 时设置元数据,因为它将在配置 VM 时设置,以下是 REST 中使用createObject方法的示例:
POST: https://api.softlayer.com/rest/v3/SoftLayer_Virtual_Guest/createObject
{
"parameters": [{
"hostname": "hostname01",
"domain": "softlayer.local",
"datacenter": { "name": "dal10" },
"startCpus": 1,
"maxMemory": 1024,
"localDiskFlag": false,
"blockDevices": [{
"device": "0",
"diskImage": { "capacity": 25 }
}],
"networkComponents": [{ "maxSpeed": 10 }],
"hourlyBillingFlag": true,
"operatingSystemReferenceCode": "DEBIAN_LATEST",
"userData": [ { "value": "someUserMetadataValue" } ]
}]
}
推荐阅读
- python - python中我的变量输入的语法无效
- excel - 将 XML 转换为 excel,但前导零被删除
- php - 在 laravel 中注册或登录后如何使用信息消息重定向?
- asp.net - AADSTS50059:使用“{prompt”、“none”} 获取代码时未找到租户识别信息
- mysql - TypeError: Router.use() 需要一个中间件函数但得到一个对象(NodeJs、Express 和 Mysql)
- mysql - 在 MySQL 中不存在时执行 SELECT 但 INSERT
- mongodb - 无法连接到 EC2 Linux 上的 mongo
- excel - 在一页上打印两页
- file - 在 Dropbox 中恢复被覆盖的文件和目录
- c# - 在实体框架中合并 2 个实体图