首页 文章

Softlayer VSI总Sotrage

提问于
浏览
0

此REST调用显示具有CPU,内存,存储的VM列表...如何总计总存储量而不是显示单个磁盘大小?

https://APIID:Key@api.softlayer.com/rest/v3/SoftLayer_Account/getVirtualGuests?objectMask=mask[id,hostname,primaryIpAddress,primaryBackendIpAddress,maxCpu,maxMemory,domain,fullyQualifiedDomainName,createDate,operatingSystem[id,softwareDescription[longDescription]],networkVlans[vlanNumber,primarySubnetId,name],datacenter[name],powerState[keyName],blockDevices[id,mountType,diskImage[capacity]]]

谢谢Behzad

2 回答

  • 0

    考虑到REST请求仅用于检索每个datatype object的数据,这意味着您无法通过REST执行任何计算 .

    为了获得总存储空间,我建议您使用SoftLayer支持的语言,如PythonJavaC#RubyGolang等 . 见Softlayer API Overview

  • 0

    这个python应该适合你 .

    """
    Goes through each virtual guest, prints out the FQDN, each disk and its size
    and then the total size for disks on that virtual guest.
    """
    import SoftLayer
    from pprint import pprint as pp
    
    class example():
    
        def __init__(self):
    
            self.client = SoftLayer.Client()
    
        def main(self):
            mask = "mask[id,fullyQualifiedDomainName,blockDevices[diskImage[type]]]"
            guests = self.client['SoftLayer_Account'].getVirtualGuests(mask=mask)
            for guest in guests:
                self.getSumStorage(guest)
    
        def getSumStorage(self, guest):
            """
                Gets the total disk space for each virtual guest.
                DOES NOT COUNT SWAP SPACE in this total
            """
            print("%s" % guest['fullyQualifiedDomainName'])
            sumTotal = 0
            for device in guest['blockDevices']:
                try:
                    if device['diskImage']['type']['keyName'] == 'SWAP':
                        print("\tSWAP: %s  - %s GB  (not counted)" %(device['device'],device['diskImage']['capacity']) )
                        continue
                    else:
                        print("\tDisk: %s  - %s GB" %(device['device'],device['diskImage']['capacity']) )
                        sumTotal = sumTotal + device['diskImage']['capacity']
                except KeyError:
                    continue
            print("TOTAL: %s GB" % sumTotal)
            return sumTotal
    
    if __name__ == "__main__":
        main = example()
        main.main()
    

    会输出这样的东西:

    $ python diskSum.py
    LAMP1.asdf.com
        Disk: 0  - 25 GB
        SWAP: 1  - 2 GB  (not counted)
    TOTAL: 25 GB
    LAMP2.asdf.com
        Disk: 0  - 25 GB
        SWAP: 1  - 2 GB  (not counted)
    TOTAL: 25 GB
    

相关问题