Softlayer服务对 "getSnapshotPercentage "的调用失败了[英] Softlayer service call to "getSnapshotPercentage" is failing

本文是小编为大家收集整理的关于Softlayer服务对 "getSnapshotPercentage "的调用失败了的处理/解决方法,可以参考本文帮助大家快速定位并解决问题,中文翻译不准确的可切换到English标签页查看源文。

问题描述

我将以下逻辑写入获取以下错误.请注意,我已经尝试了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中的快照空间表示形式,它或多或少会更新.

我希望这可以帮助您.

本文地址:https://www.itbaoku.cn/post/1937760.html

问题描述

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.

enter image description here

推荐答案

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.