Search code examples
ibm-cloud-infrastructure

Direct Link Graphs in Softlayer


I am developing a graph for bandwidth and usage(refer to attached file)using Softlayer API. Is it possible to directly link the graphs using the session of accountID&Pass to show in our portal??

bandwidth and usage graph


Solution

  • The way that SL API allows you to get graphs is using some methods:

    For example:

    http://sldn.softlayer.com/reference/services/SoftLayer_Metric_Tracking_Object/getBandwidthGraph http://sldn.softlayer.com/reference/services/SoftLayer_Virtual_Guest/getCustomBandwidthDataByDate http://sldn.softlayer.com/reference/services/SoftLayer_Hardware_Server/getCustomBandwidthDataByDate

    You can see that need to use some required headers and parameters.

    This is python example to get the bandwidth graph for hardware:

    """
    Retrieve a bandwidth graph for a single server.
    
    Retrieve a bandwidth graph for a single server for an arbitrary start and
    end date, specifying graph size and other graphing options. We can do this
    with two calls to the SoftLayer API.
    
    Counter data such as bandwidth counters and VSI resource use are stored in
    a server's metric tracking object. Our first call retrieves that server's
    tracking object record. The second call is to the tracking object service
    which will generate a PNG image of our bandwidth graph.
    
    Important manual pages:
    http://sldn.softlayer.com/reference/services/SoftLayer_Hardware_Server/getObject
    http://sldn.softlayer.com/reference/services/SoftLayer_Metric_Tracking_Object/getBandwidthGraph
    http://sldn.softlayer.com/reference/datatypes/SoftLayer_Container_Bandwidth_GraphOutputs
    
    License: http://sldn.softlayer.com/article/License
    Author: SoftLayer Technologies, Inc. <[email protected]>
    """
    import SoftLayer.API
    
    # Your SoftLayer API username and key.
    USERNAME = 'set me'
    API_KEY = 'set me'
    
    """
    The id number of the server whose graph you wish to retrieve. Call the
    getHardware() method in the SoftLayer_Account API service to retrieve a list
    of the servers on your account.
    """
    serverID = 87165
    # The date at which you wish to start graphing bandwidth.
    startDate = '2015-3-1'
    # The date at which you wish to end graphing bandwidth.
    endDate = '2015-4-11'
    # Whether to get a graph for 'public' or 'private' bandwidth usage.
    graphType = 'public'
    # The height of the text in the bandwidth graph in pixels.
    fontSize = 8
    # The width of the graph to retrieve in pixels.
    graphWidth = 827
    graphHeight = 273
    hideTimeZone = True
    
    # Declaring the API client
    client = SoftLayer.Client(username=USERNAME, api_key=API_KEY)
    hardawareService = client['SoftLayer_Hardware_Server']
    metricTrackingObject = client['SoftLayer_Metric_Tracking_Object']
    
    try:
        trackingObject = hardawareService.getMetricTrackingObject(id=serverID)
    except SoftLayer.SoftLayerAPIError as e:
        print("Unable to retrieve the metric tracking object:"
              % (e.faultCode, e.faultString))
    
    try:
        """
        getBandwidthGraph() returns a SoftLayer_Container_Bandwidth_GraphOutputs
        object. The contents of the bandwidth image is in $image->graphImage.
        From here you can write it to the file system, display it to a web
        browser, or run other functions on it.
        """
        image = metricTrackingObject.getBandwidthGraph(startDate, endDate, graphType, fontSize, graphWidth, graphHeight, hideTimeZone, id=trackingObject['id'])
        print("Image retrieved!")
    except SoftLayer.SoftLayerAPIError as e:
        print("Unable to retrieve bandwidth image"
              % (e.faultCode, e.faultString))
    

    Some References:

    http://sldn.softlayer.com/reference/services/SoftLayer_Hardware_Server/getCustomBandwidthDataByDate http://sldn.softlayer.com/reference/datatypes/SoftLayer_Container_Graph http://sldn.softlayer.com/reference/services/SoftLayer_Hardware_Server/getBandwidthForDateRange

    http://sldn.softlayer.com/reference/services/SoftLayer_Hardware_Server/getObject http://sldn.softlayer.com/reference/services/SoftLayer_Metric_Tracking_Object/getBandwidthGraph http://sldn.softlayer.com/reference/datatypes/SoftLayer_Container_Bandwidth_GraphOutputs