使用softlayer api和slcli实用程序,我尝试从快照恢复卷。 但我无法使用python和slcli从softlayer api恢复。
如何通过softlayer api使用python从snapthot恢复?
volumeid:13010889 snapshotid:13230363
slcli snapshot restore-volume 13230363 13010889
导入SoftLayer
client = SoftLayer.Client()
iscsi =客户[' Network_Storage_Iscsi']
iscsi.restoreFromSnapshot(13230371,ID = 13010889)
答案 0 :(得分:0)
你粘贴你得到的错误会很好,无论如何你的代码很好,我认为错误的是你发送的数据:
此致
答案 1 :(得分:0)
我可以确认restoreFromSnapshot API调用确实已被破坏。我把机密信息留空了。
/home/scripts > ./snapshot.py list 12193217
VOLUM ID: 12193217
+---+-------------------+----------+----------+---------------------------+
| # | username | id | nasType | createDate |
+---+-------------------+----------+----------+---------------------------+
| 7 | *** | 13020991 | SNAPSHOT | *** |
/home/scripts > ./snapshot.py restore 12193217 13020991
iscsi id: 12193217
iscsi snapshot ID: 13020991
True
def restore_from_snapshot(sl_config, volume_id, snapshot_id):
""" Restore drive from specified snapshot """
if snapshot_id and volume_id:
volume_id = volume_id[0]
snapshot_id = snapshot_id[0]
#print "snapshot_id = %s :: volume_id = %s" % snapshot_id % volume_id
iscsi_mgr = SoftLayer.ISCSIManager(SL.instance(sl_config).client)
iscsi_id = helpers.resolve_id(iscsi_mgr.resolve_ids, volume_id,'iSCSI')
print "iscsi id: %i" % iscsi_id
iscsi_snapshot_id = helpers.resolve_id(iscsi_mgr.resolve_ids, snapshot_id,'Snapshot')
print "iscsi snapshot ID: %i " % iscsi_snapshot_id
iscsi = SL.instance(sl_config).client['Network_Storage_Iscsi']
snapshot_output = iscsi.restoreFromSnapshot(iscsi_snapshot_id, id=iscsi_id)
print snapshot_output
在此之后没有任何事情发生。只有通过Web API才能进行还原。 SLCLI也被破坏(它使用相同的服务)。