问题描述
我将以下逻辑写入获取以下错误.请注意,我已经尝试了Network_Storage和Network_Storage_Iscsi>的尝试,并且在两种情况下都看到了相同的响应.是否有解决方法?这是一个错误?
def get_snapshot_space(sl_config, iscsi_identifier): """ get the total number of Snapshot Space remaining""" snapshot_percentage = SL.instance(sl_config).net.getSnapshotPercentage(id=iscsi_identifier); print "Snapshot Space Used: \% %s " % snapshot_space;
错误:
snapshot_percentage = SL.instance(sl_config).net.getSnapshotPercentage(id=iscsi_identifier); File "/usr/lib/python2.7/site-packages/SoftLayer-5.1.0- py2.7.egg/SoftLayer/API.py", line 375, in call_handler return self(name, *args, **kwargs) File "/usr/lib/python2.7/site-packages/SoftLayer-5.1.0- py2.7.egg/SoftLayer/API.py", line 343, in call return self.client.call(self.name, name, *args, **kwargs) File "/usr/lib/python2.7/site-packages/SoftLayer-5.1.0- py2.7.egg/SoftLayer/API.py", line 246, in call return self.transport(request) File "/usr/lib/python2.7/site-packages/SoftLayer-5.1.0- py2.7.egg/SoftLayer/transports.py", line 187, in __call__ raise _ex(ex.faultCode, ex.faultString) SoftLayer.exceptions.SoftLayerAPIError: SoftLayerAPIError(Client): Function ("getSnapshotPercentage") is not a valid method for this service
另外,我已经注意到,在Softlayer门户上,百分比的表示有时是不正确的吗?自从我清理所有快照以来,已经有一个多小时了.
推荐答案
该方法当前已弃用,因此您可以使用对象掩码检索 bytesused 和 snapshotcapacitygb 属性.
下一个脚本生成了UI门户中显示的快照空间.
""" Retrieves snapshot space. See below references for more details. Important manual pages: http://sldn.softlayer.com/reference/datatypes/SoftLayer_Network_Storage @License: http://sldn.softlayer.com/article/License @Author: SoftLayer Technologies, Inc. <sldn@softlayer.com> """ import SoftLayer USERNAME = 'set me' API_KEY = 'set me' client = SoftLayer.create_client_from_env(username=USERNAME, api_key=API_KEY) networkStorageService = client['SoftLayer_Network_Storage'] iscsiStorageId = 1234567 objectMask = 'mask[snapshotCapacityGb,snapshots[bytesUsed,snapshotSizeBytes,snapshotSpaceAvailable]]' try: storage = networkStorageService.getObject(mask=objectMask, id=iscsiStorageId) capacity = long(float(storage['snapshotCapacityGb'])) * 1e+9 used_space = 0 for child in storage['snapshots']: used_space = used_space + long(float(child['snapshotSizeBytes'])) snapshot_space = (capacity - used_space) / 1e+9 print snapshot_space except SoftLayer.SoftLayerAPIError as e: print('Failed ... faultCode=%s, faultString=%s' % (e.faultCode, e.faultString))
关于UI中的快照空间表示形式,它或多或少会更新.
我希望这可以帮助您.
问题描述
I wrote the following logic to get the Snapshot Percentage, and am getting the below error. NOTE, I have tried this with both the Network_Storage, and Network_Storage_Iscsi and am seeing the same response for both cases. Is there a workaround or is this a bug?
def get_snapshot_space(sl_config, iscsi_identifier): """ get the total number of Snapshot Space remaining""" snapshot_percentage = SL.instance(sl_config).net.getSnapshotPercentage(id=iscsi_identifier); print "Snapshot Space Used: \% %s " % snapshot_space;
ERROR:
snapshot_percentage = SL.instance(sl_config).net.getSnapshotPercentage(id=iscsi_identifier); File "/usr/lib/python2.7/site-packages/SoftLayer-5.1.0- py2.7.egg/SoftLayer/API.py", line 375, in call_handler return self(name, *args, **kwargs) File "/usr/lib/python2.7/site-packages/SoftLayer-5.1.0- py2.7.egg/SoftLayer/API.py", line 343, in call return self.client.call(self.name, name, *args, **kwargs) File "/usr/lib/python2.7/site-packages/SoftLayer-5.1.0- py2.7.egg/SoftLayer/API.py", line 246, in call return self.transport(request) File "/usr/lib/python2.7/site-packages/SoftLayer-5.1.0- py2.7.egg/SoftLayer/transports.py", line 187, in __call__ raise _ex(ex.faultCode, ex.faultString) SoftLayer.exceptions.SoftLayerAPIError: SoftLayerAPIError(Client): Function ("getSnapshotPercentage") is not a valid method for this service
Also, I have noticed that on the softLayer Portal, the representation of the percentage is incorrect sometimes? It's been well over an hour since I have cleared all snapshots.
推荐答案
The method is currently deprecated so you could use an object mask to retrieve the bytesUsed and snapshotCapacityGb attributes.
The next script generates the snapshot space available that's displayed in the UI portal.
""" Retrieves snapshot space. See below references for more details. Important manual pages: http://sldn.softlayer.com/reference/datatypes/SoftLayer_Network_Storage @License: http://sldn.softlayer.com/article/License @Author: SoftLayer Technologies, Inc. <sldn@softlayer.com> """ import SoftLayer USERNAME = 'set me' API_KEY = 'set me' client = SoftLayer.create_client_from_env(username=USERNAME, api_key=API_KEY) networkStorageService = client['SoftLayer_Network_Storage'] iscsiStorageId = 1234567 objectMask = 'mask[snapshotCapacityGb,snapshots[bytesUsed,snapshotSizeBytes,snapshotSpaceAvailable]]' try: storage = networkStorageService.getObject(mask=objectMask, id=iscsiStorageId) capacity = long(float(storage['snapshotCapacityGb'])) * 1e+9 used_space = 0 for child in storage['snapshots']: used_space = used_space + long(float(child['snapshotSizeBytes'])) snapshot_space = (capacity - used_space) / 1e+9 print snapshot_space except SoftLayer.SoftLayerAPIError as e: print('Failed ... faultCode=%s, faultString=%s' % (e.faultCode, e.faultString))
Regarding the snapshot space representation in the UI, it's updated each hour more or less.
I hope this could help you.