python-3.xrestfilteribm-cloud-infrastructure

How to get billing item details using the SoftLayer Python client?


How do I use the Python SoftLayer client (using v5.7.1) to determine the location (eg: dal10) for an NFS billing item (endurance storage)?

I used some other examples here on SO and came up with this, but the call failed:

objectFilter = {"billingItem": {"id": {"operation": "12345"}}}
account.getAllBillingItems(filter=objectFilter)
Traceback (most recent call last):
  File "/usr/local/lib/python3.8/site-packages/SoftLayer/transports.py", line 240, in __call__
    raise _es(ex.faultCode, ex.faultString)
SoftLayer.exceptions.SoftLayerAPIError: SoftLayerAPIError(SOAP-ENV:Server): Internal Error

Solution

  • Try using the following python script to get the billing item detail and the location too.

    import json

    import SoftLayer
    
    API_USERNAME = 'set me'
    
    API_KEY = 'set me'
    
    client = SoftLayer.create_client_from_env(username=API_USERNAME, api_key=API_KEY)
    
    billingItemId = 1234
    mask = "mask[location]"
    
    try:
        response = client['SoftLayer_Billing_Item'].getObject(mask=mask, id=billingItemId)
        print(response)
    except SoftLayer.SoftLayerAPIError as e:
        """
        If there was an error returned from the SoftLayer API then bomb out with the
        error message.
        """
        print("Unable to retrieve the billing item information. "
              % (e.faultCode, e.faultString))