我想更新环境中每个vyatta服务器上的所有组件(90+)。我想通过API调用脚本执行此操作,但是当我尝试使用时:
slcli -C USERNAME api-call Hardware_Server createFirmwareUpdateTransaction SERVER-ID
它只重新启动了我试过的测试系统。
我是否需要在命令中添加一些额外信息来指定要升级的项目(最好是所有项目,如ipmi和其他组件)?
答案 0 :(得分:0)
请尝试以下 slcli 示例:
slcli call-api Hardware_Server createFirmwareUpdateTransaction --id=179996 1 1 1 1
<强>其中:强>
“179996”
是server_id &#34; FIRMWARE UPDATES&#34;:
"upgrade IPMI Firmware" : 1,
"upgrade RAID Firmware" : 1,
"upgrade Bios" : 1,
"upgrade Hard Drive Firmware" : 1
这也是休息示例:
https://[username]:[apikey]@api.softlayer.com/rest/v3/ SoftLayer_Hardware_Server/[Server_ID]/createFirmwareUpdateTransaction
方法:POST
{
"parameters": [
1,
0,
1,
0
]
}
这是一个 python 脚本:
"""
Update the firmware in a BareMetal server
The script makes a single call to SoftLayer_Hardware_Server::createFirmwareUpdateTransaction
method to update the firmware in a bare metal server.
See below for more details
Important manual pages:
http://sldn.softlayer.com/reference/services/SoftLayer_Hardware_Server/createFirmwareUpdateTransaction
License: http://sldn.softlayer.com/article/License
Author: SoftLayer Technologies, Inc.
"""
import SoftLayer.API
from pprint import pprint as pp
# Your SoftLayer API username and key.
USERNAME = 'set me'
API_KEY = 'set me'
# Declare the API client
client = SoftLayer.Client(username=USERNAME, api_key=API_KEY)
hardwareServerService = client['SoftLayer_Hardware_Server']
# The id of the bare metal server you wish to update the firmware
hardwareId = 100123
"""
The firmware to update
set the values with "1" to update and "0" skip
"""
ipmi = 0
raidController = 1
bios = 0
hardDrive = 0
try:
result = hardwareServerService.createFirmwareUpdateTransaction(ipmi, raidController, bios, hardDrive, id=hardwareId)
pp(result)
except SoftLayer.SoftLayerAPIError as e:
print("Unable to update the firmware. "
% (e.faultCode, e.faultString))
exit(1)
问候。
答案 1 :(得分:0)
你可以试试这个:
slcli call-api --id=155392 Hardware_Server createFirmwareUpdateTransaction 1 1 1 1
注意:更改要更新的服务器ID的“155392”值
此致